简单讲解AngularJS的Routing路由的定义与使用


Posted in Javascript onMarch 05, 2016

在单页面应用中,视图之间的跳转就显尤为重要的,随着应用越来越复杂,我们需要用一种方法来精确控制什么时候该呈现怎样的页面给用户。

咱们可以通过在主页面中引入不同的模板来支持不同页面的切换,但是这么做的缺点就是,越来越多的内嵌代码导致最后难以管理。

通过ng-include指令我们可以把很多的模板整合在视图中,但是我们有更好的方法来处理这种情况,我们可以把视图打散成layout和模板视图,然后根据用户访问的特定的URL来显示需要的视图

我们可以将这些“碎片”在一个布局模板中拼接起来

AngularJS通过在$routeProvider($route服务的提供者)上声明routes来实现上面的构想

使用$routeProvider,我们可以更好的利用浏览历史的API并且可以让用户可以把当前路径存成书签以方便以后的使用

在我们的应用中设定路由,我们需要做两件事情:第一,我们需要指出我们存放将要存放新页面内容的布局模板在哪里。比如,如果我们想在所有页面都配上header和footer,我们可以这样设计布局模板:

<header>
 <h1>Header</h1>
</header>
<div class="content">
 <div ng-view></div>
</div>
<footer>
 <h5>Footer</h5>
</footer>

ng-view指令将高速$routeProvider在哪里渲染模板

第二,我们需要配置我们的路由信息,我们将在应用中配置$routeProvider

$routeProvider提供了两种方法处理路由:when和otherwise。 方法when接收两个参数,第一个设置$location.path(). (直接用“//”也没有问题)

定义
定义路由非常容易,在我们的应用mian模块里面注入ngRoute依赖就可以了

angular.module('myApp', ['ngRoute'])
 .config(function($routeProvider) {});

现在,我们就可以给应用定义路由了。在路由模块里面的.config()方法里面注入了$routeProvider,上面的代码给我们演示了两个用于定义路由的方法。

when()

when()方法有两个参数,我们希望匹配的浏览器url和路由操作对象。一般main route经常使用“/”来表示,也可以定义URL参数,在controller里面就使用$routeParams获取url参数。

templateUrl: 表示路由跳转的view模板

controller: 控制器

angular.module('myApp', ['ngRoute'])
  .config(function($routeProvider) {
   $routeProvider
    .when('/', {
     templateUrl: 'views/main.html',
     controller: 'MainCtrl'
    })
    .when('/day/:id', {
     templateUrl: 'views/day.html',
     controller: 'DayCtrl'
    })

otherwise()

otherwise()定义了当应用找不到指定路由的时候跳转的路由

angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {
 $routeProvider
  .when('/', {
   templateUrl: 'views/main.html',
   controller: 'MainCtrl'
  })
  .when('/day/:id', {
   templateUrl: 'views/day.html',
   controller: 'DayCtrl'
  })
  .otherwise({
   redirectTo: '/'
  });
})

使用
定义好了路由需要怎么使用呢?我们要告诉angular页面的哪一个部分是我们希望转换的,这需要使用到ng-view指令

<div class="header">My page</div>
<div ng-view></div>
<span class="footer">A footer</span>

这样就只有<div ng-view></div>会被更新, header/footer都始终保持不变

Javascript 相关文章推荐
键盘控制事件应用教程大全
Nov 24 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
微信小程序 删除项目工程实现步骤
Nov 10 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
layer.alert回调函数执行关闭弹窗的实例
Sep 11 Javascript
layui使用label标签的方法
Sep 14 Javascript
JavaScript字符和ASCII实现互相转换
Jun 03 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 #Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 #Javascript
深入解析AngularJS框架中$scope的作用与生命周期
Mar 05 #Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 #Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
Mar 05 #Javascript
js控制TR的显示隐藏
Mar 04 #Javascript
Node.js操作Firebird数据库教程
Mar 04 #Javascript
You might like
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
初识javascript 文档碎片
2010/07/13 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
iframe子页面获取父页面元素的方法
2013/11/05 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
Angular4 中内置指令的基本用法
2017/07/31 Javascript
Vuex 入门教程
2018/01/10 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
基于Python实现用户管理系统
2019/02/26 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
python 6行代码制作月历生成器
2020/09/18 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
考试违纪检讨书
2014/02/02 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
老员工辞职信范文
2015/05/12 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书