简单讲解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 相关文章推荐
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
jquery比较简洁的软键盘特效实现方法
Mar 19 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
jQuery事件对象总结
Oct 17 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
微信小程序 跳转方式总结
Apr 20 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 Javascript
JavaScript对象属性操作实例解析
Feb 04 Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 Javascript
JS实现拖动模糊框特效
Aug 25 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常用字符串的总结(待续)
2013/06/07 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
基于jquery的表格排序
2010/09/11 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
python实现一个猜拳游戏
2020/04/05 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
python实现学生管理系统开发
2020/07/24 Python
Python自动创建Excel并获取内容
2020/09/16 Python
大学毕业后的十年规划
2014/01/07 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python