简单讲解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 相关文章推荐
JS window.opener返回父页面的应用
Oct 24 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
Jun 11 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
Sep 01 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
Oct 19 Javascript
深入学习JavaScript中的bom
May 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
PHP页面实现定时跳转的方法
2014/10/31 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
JSONP 跨域共享信息
2012/08/16 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
js图片预加载示例
2014/04/30 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Python爬取三国演义的实现方法
2016/09/12 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
Python高级用法总结
2018/05/26 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
详解Python3 pickle模块用法
2019/09/16 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
中式餐厅创业计划书范文
2014/01/23 职场文书
退休感言
2014/01/28 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
Python实现排序方法常见的四种
2021/07/15 Python