angular路由小笔记
2016-02-29 17:28
741 查看
angular路由
angular提供的 when和otherwise两个方法来定义引用路由。路由中有controller template templateUrl resolve
其中
controller 是指定的控制器与路由所创建的新作用域关联在一起。
template templateURL为模板 模板路径 比较重要的是 resolve,要单独记录一下。
如果设置了*resolve属性,AngularJS会将列表中的元素都注入到控制器中。如果这些依赖是promise对象,它们在控制器加载以及$routeChangeSuccess被触发之前,会被resolve并设置成一个值。*
redirectTo 属性的值是一个字符串,最后路径会替换为这个值。
reloadOnSearch 如果设置为true,当$location.search()发生变化时会重新加载路由。false就不会了。
routeParamsangular会把路由参数解析出来并传递给routeParams angular会把路由参数解析出来并传递给routeParams。用法是在路由参数前面加上”:”,如testId
app.config(['$routeProvider',function ($routeProvider) { $routeProvider .when('/test', { templateUrl: 'angu_home_route/test.html', controller: 'homeStarter' }) .when('/testId/:id', { templateUrl: 'angu_home_route/testId.html', controller: 'testIdCtrl', resolve:{ getJson: function($http){ $http.get("json/test.json") .success(function(json) { console.log(json); angular.forEach(json,function(data,index,array){ for(var i = 0;i < data.length; i++){ console.log(data[i].userCode); } }); }); } } }) .otherwise({ redirectTo: '/test' });
}]);
注意 如果需要在控制器中访问这些变量,需要把$routeParams注入到控制器。
$location服务
用来解析地址栏中的URL,location没有刷新整个页面的能力,如果需要刷新整个页面,需要使用location没有刷新整个页面的能力,如果需要刷新整个页面,需要使用window.location对象。path() 用来获取页面的当前路径
replace() 屏蔽回退按钮 不能点击后退按钮
absUrl() 用来回去编码后的完整URL
hash() 用来获取URL中的hash片段
host() 获取URL中的主机
port() 获取port中的端口号
protocol() 获取URL中的协议
search() 获取URL中的查询串
url() 获取当前页面的url
angular 支持两种模式 标签模式 和 html5模式
标签模式
标签模式是HTML5模式的降级方案,URL路径以#符号开头。html5模式
运用时不要用相对路径。路由事件
路由事件有二个阶段第一阶段就是路由变化之前的广播 routeChangeStart这一步,路由服务会开始加载路由变化所需的所有依赖,并且模板行业resolve键中的promise也会被resolve。∗∗第二阶段∗∗就是在路由的依赖被加载后广播routeChangeStart 这一步,路由服务会开始加载路由变化所需的所有依赖,并且模板行业resolve键中的promise也会被resolve。
**
第二阶段**就是在路由的依赖被加载后广播 routeChangeSuccess事件。
另外就是会出现routeChangeError即失败routeChangeError即失败 routeUpdate
# location服务不会重新加载整个页面,它只会单纯地改变URL。如果我们想重新加载整个页面,需要用location服务不会重新加载整个页面,它只会单纯地改变URL。如果我们想重新加载整个页面,需要用window服务来设置地址。
$window.location.href = “/reload/page”;
如果要在作用域的生命周期外使用location服务,必须用location服务,必须用apply函数将变化抛到应用外部。因为location服务是基于location服务是基于digest来驱动浏览器的地址变化,以使路由事件正常工作的。
相关文章推荐
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
- angular路由参数传递
- AngularJS简介
- karma + Jasmine 自动化测试AngularJS代码
- Karma 5:集成 Karma 和 Angular2
- angular对变量变化的策略
- angular概念
- angular数据绑定
- [转]你知道用AngularJs怎么定义指令吗?--很详细
- Angular 2 要来了,Wijmo 已准备好迎接
- Angularjs Controller 间通信机制
- [转]Angular移除不必要的$watch之性能优化
- angularjs filter 详解
- 基于angularJS和requireJS的前端架构
- AngularJs显示大括号的解决办法
- AngularJS中的事件
- 给 Web 开发者的 25 款最有用的 AngularJS 工具
- AngularJs单元测试
- AngularJS进阶(三十五)浏览器兼容性解决之道