AngularJS-7 路由入门
更新时间:2023-12-14 13:02:01 阅读量: 教育文库 文档下载
AngularJS - 路由入门
我们有很多方法让一个视图随着用户的操作进行变化。
但是,只是单单一个视图就要满足所有的需求会让代码变得非常复杂。 也许我们可以使用ng-include来引用各种模板,但这只限于部分场景。 于是我们可以将视图拆分为两种:
布局视图 ? 模板视图
?
如此一来,我们便可以使用route实现模板和布局视图的组装,以构建多视图的应用。
Route
ngRoutes并不属于核心模块,我们需要额外引用angular-route.js,并在声明应用时: varmyApp = angular.module('myApp',['ngRoute']);
$routeProvider
route需要通过$routeProvider定义,比如这样:
varmyApp = angular.module('myApp', ['ngRoute']) .config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', {
template:'
contacts
', controller:'myController' }).when('/contacts', { templateUrl:'contacts.html', controller:'contactsController' })
.when('/contacts/:userId', { templateUrl:'contact.html', controller:'contactController' })
.otherwise({redirectTo:'/'}); }]);
OMG,这种定义方式太晦涩了,我们不能像定义指令时用directive()那样用route()什么的吗? 其实directive()什么的都是config()的语法糖。 比如我们这样声明一个指令:
varmyApp = angular.module('myApp', [])
.directive('myDirective', function() { return {
template: '
Kavlez
' }; });其实是:
varmyApp = angular.module('myApp', []) .config(function($compileProvider){
$compileProvider.directive('myDirective', function() { return {
template: '
Kavlez
' }; }); });
provider用来实例化依赖并对外提供API,比如这里的$route服务就是通过相应的$routeProvider
对外提供API,比如when(),我们通过这些API设置路由规则。 另外,provider是怎么来的?
Injector对module进行配置时,会在这些module中注册所有定义的provider,必要时会注入服
务,而服务的实例化则需要provider来进行。
路由模式
不同的路由模式下URL会以不同的格式呈现,我们有两种模式可以选择。
? 标签模式
AngularJS默认使用这个模式,这个模式下URL会以'#'开头。 ? html5模式
这个模式下的URL和一般的没什么区别,如果选择了该模式,AngularJS会根据浏览器重写所有的
路由模式也通过$routeProvider进行设置,比如:
varmyApp = angular.module('myApp', ['ngRoute'])
.config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode(false); $locationProvider.hashPrefix('!'); }])
when
这里使用的when(path,route)一共两个参数。
path比较好理解,也就是路由路径,和$location.path匹配,后面带上:则表示
参数,可以传递给$routeParams。
? route指的是path匹配后的动作,是一个对象,属性有:
? controller (string/function):在这里声明的控制器会得到路由创建的作用域。
?
? ? ? ? ?
template (string):HTML模板渲染到声明了ng-view的元素里。
templateURL (string):功能和template一样,只是通过XHR获得模板。 resolve : 将列表对象注入到controller中。
redirectTo (string/function): 用于替换path。比起用作字符串,函数更有意义。
reloadOnSearch (boolean):默认是true,也就是$location.search()发生变化时重新加载路由。
ng-view
我们用ng-view接收对应的视图模板,给$route对应的视图占位。
mg-view的优先级为1000,也就是说AngularJS不会运行同一个元素上的低优先级指令。
ngView指令遵循以下规则。
每次触发$routeChangeSuccess事件,视图都会更新。 ? 如果某个模板同当前的路由相关联:
? 创建一个新的作用域;
? 移除上一个视图,同时上一个作用域也会被清除; ? 将新的作用域同当前模板关联在一起; ? 如果路由中有相关的定义,那么就把对应的控制器同当前作用域关联起来; ? 触发$viewContentLoaded事件;
? 如果提供了onload属性,调用该属性所指定的函数。
?
$location
既然涉及到了路径,就不得不说$location服务。
感觉和windows.location差不多,但$location只能用来在内部访问路由,无法刷新整个页面。 下面列出$location的常用的一些方法。
? path() 当前路径: ?
$location.path();
跳转至:
$location.path('/');
? replace()
这个方法可以让用户无法后退,比如这样: ? ? ? ? ? ?
$location.path('/').replace();
absUrl() : 获取绝对路径
hash() : 获取URL中的hash片段 host() : 获取host port() : 获取端口号 protocol() : 获取协议
? search() :
用于设置URL中的查询参数,比如:
? ? ?
$location.search({id:'000000',name:'Kavlez'}); $location.search('id=000000&name=Kavlez');
url() : 获取当前URL,或者修改当前URL
event
有几个路由相关的事件如下:
? $routeChangeStart : 路由变化之前会触发该事件,有三个参数,分别是AngularJS事件对象、将要路由的url、当前url。 ? ? ? ?
$rootScope.$on('$routeChangeStart', function(evt, next, current) { //something });
$routeChangeSuccess : 路由成功后触发,三个参数分别为AngularJS事件对象、当前url、上一个url
? $routeChangeError : 被拒时触发,三个参数为当前路由信息、上一个路由的信
息、错误信息。
? $routeUpdate : 如果reloadOnSearch为false,重新使用控制器的实力时触发。
正在阅读:
AngularJS-7 路由入门12-14
08中建三局项目劳务招投标管理办法 - secret05-01
润滑油MSDS09-05
贫困山区孩子让人辛酸的学习生活05-25
美丽小学美术社团活动记录03-25
振安区高级中学高中语文 第六课时 项羽之死教案 北师大版选修《中国古代诗歌散文欣赏》10-02
社会家庭学校三结合活动记录11-19
房地产大气推广语07-08
社区副主任竞聘演讲稿范文 - 106-15
《经济学基础》各章习题及参考答案12-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 路由
- AngularJS
- 入门
- 某工程安装工程施工组织设计 - 图文
- 实验四 循环结构程序设计
- 山东省青岛市城阳区2018届高三上学期学分认定考试(期末)理科综合物理试题Word版含答案
- 数学智能培养与提高(附答案)(一)
- 活动调查问卷
- 常用国内外材料的标准及牌号对照
- 金属拉丝粉项目可行性研究报告 - 图文
- 00537中国现代文学史资料整理(完整)
- 冲压模具计算
- 贷款按行业分类统计制度 - 图文
- 2021南京林业大学金融考研真题经验参考书
- 民主生活会领导干部查摆问题及原因分析发言提纲(共32条)
- 基于ansys的铁路钢桁架桥受力分析
- 特种作业人员焊接与热切割作业初训模拟试卷
- 检验数据原始记录表格(茶叶)-1
- 山东省办公设备修理行业企业名录179家
- (附12套名校模拟试卷)江苏省南京市玄武区2019届中考数学三模语文试卷及答案
- 第7章 土坡稳定分析
- 人才引进方案
- 浅谈如何转化后进生