路由的Resolve机制(需要了解promise)
angular的resovle机制,实际上是应用了promise,在进入特定的路由之前给我们一个做预处理的机会
1、在进入这个路由之前先懒加载对应的 .js
$stateProvider
.state('owner_detail_room',{
url: '/owner_detail_room/{id:[0-9]{1,10}}',
views:{
'main' : {
templateUrl:function() { return 'templates/owner_detail_room.html'},
controller: 'owner_detail_roomCtrl'
}
},
resolve:{
loadCtrl: ['$ocLazyLoad', function($ocLazyLoad){
return $ocLazyLoad.load('js/owner_detail_roomCtrl.js')
}]
}
})
2、请注意,resolve是一个对象,它的key由我们自己指定,value则是一个promise的异步请求或字符串
首先,来一个多个键值对的例子1-懒加载js,2-获取user,3-判断页面权限
.state('owner_detail_room',{
url: '/owner_detail_room/{id:[0-9]{1,10}}',
views:{
'main' : {
templateUrl:function() { return 'templates/owner_detail_room.html'},
controller: 'owner_detail_roomCtrl'
}
},
resolve:{
loadCtrl: ['$ocLazyLoad', function($ocLazyLoad){
return $ocLazyLoad.load('js/owner_detail_roomCtrl.js')
}],
user: ['userservice',function(userservice){
return userservice.getUser();
}],
userLevelCheck:['LevelCheck','userservice',function(LevelCheck,userservice){
var isPass = LevelCheck.check(userservice.userLevel);
if(isPass){
return userservice.userLevel;
}else{
$state.go('level-is-not-enough');
}
}]
}
})
然后在对应的页面的ctrl中,可以注入resolve中的返回
app.controller('owner_detail_roomCtrl',['$scope','user', function($scope,users) {
$scope.users = users;
});
3、从resolve到进入路由Ctrl中,应用到的就是promise,($q服务属性方法:$q.defer(), $q.all(), $q.when(), $q.reject(), $q.resolve().....)
来个栗子,剩下看大家了,
resolve: {
data: function(User, Post, $q) {
deferred = $q.defer();
$q.all([User.getAll, Post.getTops()]).then(function(results) {
deferred.resolve({
users: results[0],
posts: results[1]
})
});
return deferred.promise;
}
}
最后的最后,如果有错误,请务必,一定要指出
路由的Resolve机制(需要了解promise)的更多相关文章
- AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve
本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 ...
- C# MVC ( 添加路由规则以及路由的反射机制 )
在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开 (1) 约束的规则 从上往下 贪婪性 (2) 用 routes.MapRoute(...) 添加 ...
- MVC特性路由的提供机制
回顾:传统路由是如何提供的? 我们知道最终匹配的路由数据是保存在RouteData中的,而RouteData通常又是封装在RequestContext中的,他们是在哪里被创建的呢?没错,回到了UrlR ...
- what happens if we dont resolve or reject the promise
https://stackoverflow.com/questions/36734900/what-happens-if-we-dont-resolve-or-reject-the-promise I ...
- Netty-Websocket 根据URL路由,分发机制的实现
最近在做netty整合websocket,发现网上很多项目都是最简单的demo,单例的一个项目. 然而公司的项目需要接受几个不同功能的ws协议消息,因此最好是用URL来区分,让页面上采用不同的链接方式 ...
- Promise.resolve()与Promise
//Promise.resolve()和Promise.reject()常用来生成已经被决议为失败或者成功的promise案例 //Promise.reject()简单一些,不管传给它什么值,它决议为 ...
- 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查
AngularJS中的$resource服务相比$http服务更适合与RESTful服务进行交互.本篇后端使用ASP.NET Web API, 前端使用$resource,实现增删改查. 本系列包括: ...
- requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?
在五一节之前和一网友讨论前端技术时,对方提到vue.vue-route如果配合requirejs应用.当时的我没有想得很明白,也没能这位网友一个准确的回复,但我许诺于他五一研究后给他一个回复.本是一天 ...
- AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件
本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router约束路由参数● UI-Router的Resolve属性● UI-Router给路由附加数据● UI- ...
随机推荐
- 通往全栈工程师的捷径 —— react
腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...
- 线性数据结构之栈——Stack
Linear data structures linear structures can be thought of as having two ends, whose items are order ...
- 8、Struts2 运行流程分析
1.流程分析: 请求发送给 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 ...
- 深入理解 Java G1 垃圾收集器--转
原文地址:http://blog.jobbole.com/109170/?utm_source=hao.jobbole.com&utm_medium=relatedArticle 本文首先简单 ...
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...
- springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪
获取下载地址 QQ 313596790 A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技术:31359679 ...
- RabbitMQ + PHP (一)入门与安装
RabbitMQ: 1.是实现AMQP(高级消息队列协议)的消息中间件的一种. 2.主要是为了实现系统之间的双向解耦而实现的.当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层.保存这个数 ...
- 第11章 Linux服务管理
1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...
- 二次剩余、三次剩余、k次剩余
今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- Hbase安装和错误
集群规划情况: djt1 active Hmaster djt2 standby Hmaster djt3 HRegionServer 搭建步骤: 第一步:配置conf/regionservers d ...