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)的更多相关文章

  1. AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve

    本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 ...

  2. C# MVC ( 添加路由规则以及路由的反射机制 )

    在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开   (1) 约束的规则 从上往下 贪婪性   (2) 用 routes.MapRoute(...) 添加   ...

  3. MVC特性路由的提供机制

    回顾:传统路由是如何提供的? 我们知道最终匹配的路由数据是保存在RouteData中的,而RouteData通常又是封装在RequestContext中的,他们是在哪里被创建的呢?没错,回到了UrlR ...

  4. 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 ...

  5. Netty-Websocket 根据URL路由,分发机制的实现

    最近在做netty整合websocket,发现网上很多项目都是最简单的demo,单例的一个项目. 然而公司的项目需要接受几个不同功能的ws协议消息,因此最好是用URL来区分,让页面上采用不同的链接方式 ...

  6. Promise.resolve()与Promise

    //Promise.resolve()和Promise.reject()常用来生成已经被决议为失败或者成功的promise案例 //Promise.reject()简单一些,不管传给它什么值,它决议为 ...

  7. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查

    AngularJS中的$resource服务相比$http服务更适合与RESTful服务进行交互.本篇后端使用ASP.NET Web API, 前端使用$resource,实现增删改查. 本系列包括: ...

  8. requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?

    在五一节之前和一网友讨论前端技术时,对方提到vue.vue-route如果配合requirejs应用.当时的我没有想得很明白,也没能这位网友一个准确的回复,但我许诺于他五一研究后给他一个回复.本是一天 ...

  9. AngularJS路由系列(5)-- UI-Router的路由约束、Resolve属性、路由附加数据、路由进入退出事件

    本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● UI-Router约束路由参数● UI-Router的Resolve属性● UI-Router给路由附加数据● UI- ...

随机推荐

  1. 通往全栈工程师的捷径 —— react

    腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...

  2. 线性数据结构之栈——Stack

    Linear data structures linear structures can be thought of as having two ends, whose items are order ...

  3. 8、Struts2 运行流程分析

    1.流程分析: 请求发送给 StrutsPrepareAndExecuteFilter StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 ...

  4. 深入理解 Java G1 垃圾收集器--转

    原文地址:http://blog.jobbole.com/109170/?utm_source=hao.jobbole.com&utm_medium=relatedArticle 本文首先简单 ...

  5. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案

    相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...

  6. springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪

    获取下载地址   QQ 313596790  A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技术:31359679 ...

  7. RabbitMQ + PHP (一)入门与安装

    RabbitMQ: 1.是实现AMQP(高级消息队列协议)的消息中间件的一种. 2.主要是为了实现系统之间的双向解耦而实现的.当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层.保存这个数 ...

  8. 第11章 Linux服务管理

    1. 服务分类 (1)Linux的服务 ①Linux中绝大多数的服务都是独立的,直接运行于内存中.当用户访问时,该服务直接响应用户,其好处是服务访问响应速度快.但不利之处是系统中服务越多,消耗的资源越 ...

  9. 二次剩余、三次剩余、k次剩余

    今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  10. Hbase安装和错误

    集群规划情况: djt1 active Hmaster djt2 standby Hmaster djt3 HRegionServer 搭建步骤: 第一步:配置conf/regionservers d ...