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 相关文章推荐
eval的两组性能测试数据
Aug 17 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
Sep 17 Javascript
JavaScript实现页面跳转的方式汇总
May 16 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 Javascript
解决vue里碰到 $refs 的问题的方法
Jul 13 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
微信小程序的部署方法步骤
Sep 04 Javascript
详解javascript replace高级用法
Feb 17 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
Feb 27 Javascript
AngularJS实现多级下拉框
Mar 25 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备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
实例讲解PHP表单处理
2019/02/15 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
什么是Python变量作用域
2020/06/03 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
应届大学生简历中的自我评价
2014/01/15 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
行政主管职责范本
2014/03/07 职场文书
医院合作协议书
2014/08/19 职场文书
股东出资证明书范例
2014/10/04 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
教师辞职书范文
2015/02/26 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript
SQL基础的查询语句
2021/11/11 MySQL
使用Apache Camel表达REST服务的方法
2022/06/10 Servers
JS class语法糖的深入剖析
2022/07/07 Javascript