AngularJS通过ng-route实现基本的路由功能实例详解


Posted in Javascript onDecember 13, 2016

本文实例讲述了AngularJS通过ng-route实现基本的路由功能。分享给大家供大家参考,具体如下:

为什么需要前端路由~

(1)AJAX不会留下History历史记录

(2)用户无法通过URL进入应用指定的页面(书签或者分享等)

(3)AJAX对于SEO是一个灾难

1.一般情况下,我们访问网页的时候,是通过url地址。
比如我们访问一个网页:https://www.baidu.com/index/fix.html

在AngularJS中通过“#”来进行不同页面的路由,比如:
https://www.baidu.com/#/first,这个请求在向网页端传输的时候,服务器会自动忽略#之后的内容,因此可以根据#+标记帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。

AngularJS通过ng-route实现基本的路由功能实例详解

这是一个简单的路由控制界面,根据链接中的#/first和#/second分别对应跳转到不同的页面。

2.通过angularjs中的路由模块,实现ng-route的步骤

(1)载入包含ng-route的JS文件

(2)包含了 ngRoute 模块作为主应用模块的依赖模块。

(3)使用原生指令ng-view

(4)我们在html中定义链接,可以实现一个单页应用,比如链接可以这样定义:

<body>
 <ul>
  <li><a href="#/">首页</a></li>
  <li><a href="#/first">第一页面</a></li>
  <li><a href="#/second">第二页面</a></li>
  <li><a href="#/third">第三页面</a></li>
</ul>
  <div ng-view></div>
</body>

在js中的定义路由代码为:

angular.module('myapp',['ngRoute'])
.config(['$routeProvider',function($routeProvider){
  $routeProvider.when('/',{template:'这是首页页面'})
         .when('/first',{template:'这是第一个页面'})
         .when('/second',{template:'这是第二个页面'})
         .when('/third',{template:'这是第三个页面'})
         .otherwise({redirectTo:'/'});
}]);

(6)我们来看效果,首次当未有链接切换时候,默认的跳转到首页,效果如下:

当依次点击链接时,会依次切换ng-view中的值,并且实现了ng-view内内容的替换~

I)初始效果

AngularJS通过ng-route实现基本的路由功能实例详解

II)切换后的效果

AngularJS通过ng-route实现基本的路由功能实例详解

我们发现改变的仅仅是#后的值,并没有页面的跳转和刷新

3.angularJS中的路由设置对象

AngularJS 路由也可以通过不同的模板来实现。

$routeProvider.when 函数的第一个参数是 URL 或者 URL 正则规则,第二个参数为路由配置对象。

路由配置对象语法规则如下:

$routeProvider.when(url, {
  template: string,
  templateUrl: string,
  controller: string, function 或 array,
  controllerAs: string,
  redirectTo: string, function,
  resolve: object<key, function>
});

参数解释:

(1)template:

使用该概述,可以在template中写入HTML内容,典型的例子是:

when('/',{template:'这是首页页面'})

(2)templateUrl:
如果现在我们并不是要HTML内容,而是需要一个模板文件来进行整体替换,例子如下:

$routeProvider.when('/computers', {
  templateUrl: 'views/computers.html',
});

(3)controller:function、string或数组类型,在当前模板上执行的controller函数,生成新的scope。
也可以对应的是控制器的名称。

(4)redirectTo:重定向的地址

(5)resolve:当前控制器所依赖的其他模块~

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
用javascript操作xml
Nov 04 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
如何更好的编写js async函数
May 13 Javascript
使用proxy实现一个更优雅的vue【推荐】
Jun 19 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
Jun 20 Javascript
vue实现图片上传功能
May 28 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 #Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 #Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 #Javascript
jQuery内存泄露解决办法
Dec 13 #Javascript
Angular 常用指令实例总结整理
Dec 13 #Javascript
jQuery UI制作选项卡(tabs)
Dec 13 #Javascript
详解Bootstrap各式各样的按钮(推荐)
Dec 13 #Javascript
You might like
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
会计实习生工作总结的自我评价
2013/10/07 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
python playwrigh框架入门安装使用
2022/07/23 Python
Moment的feature导致线上bug解决分析
2022/09/23 Javascript