简单讲解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编程起步(第三课)
Feb 27 Javascript
用javascript实现的激活输入框后隐藏初始内容
Jun 29 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
利用JS延迟加载百度分享代码,提高网页速度
Jul 01 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
jquery基本选择器匹配多个元素的实现方法
Sep 05 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
微信小程序canvas截取任意形状的实现代码
Jan 13 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 Javascript
Vue实现跑马灯效果
May 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
discuz7 phpMysql操作类
2009/06/21 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php 问卷调查结果统计
2015/10/08 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
python optparse模块使用实例
2015/04/09 Python
Python 多线程Threading初学教程
2017/08/22 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
理工类毕业自我鉴定
2014/02/20 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
环保建议书作文400字
2015/09/14 职场文书