简单讲解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 相关文章推荐
javaScript对象和属性的创建方法
Jan 15 Javascript
javascript 常用方法总结
Jun 03 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
Jun 30 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
简单实现jQuery进度条轮播实例代码
Jun 20 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 Javascript
浅谈Vue.use的使用
Aug 29 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 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
php中数据的批量导入(csv文件)
2006/10/09 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python Kmeans算法原理深入解析
2019/08/23 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
服务员态度差检讨书
2014/10/28 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
文明单位汇报材料
2014/12/24 职场文书
2015年女生节活动总结
2015/02/27 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
新教师教学工作总结
2015/08/14 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python