简单讲解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 贪吃蛇实现代码
Nov 22 Javascript
jquery cookie实现的简单换肤功能适合小网站
Aug 25 Javascript
iframe子页面获取父页面元素的方法
Nov 05 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
javascript解三阶幻方(九宫格)
Apr 22 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
vue生命周期实例小结
Aug 15 Javascript
了解javascript中的Dom操作
May 27 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
Mar 10 Javascript
Vue中keep-alive的两种应用方式
Jul 15 Javascript
Element Notification通知的实现示例
Jul 27 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
第二节 对象模型 [2]
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
javascript简易画板开发
2020/04/12 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
Python中的zipfile模块使用详解
2015/06/25 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
用python读取xlsx文件
2020/12/17 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
火锅店的活动方案
2014/08/15 职场文书
大学军训的体会
2014/11/08 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
雷锋观后感
2015/06/10 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书