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. svn 常用命令总结

    svn 命令篇 svn pget svn:ignore // 查看忽略项 svn commit -m "提交说明" // 提交修改 svn up(update) // 获取最新版本 ...

  2. 构建通用的 React 和 Node 应用

    这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...

  3. 挑子学习笔记:特征选择——基于假设检验的Filter方法

    转载请标明出处: http://www.cnblogs.com/tiaozistudy/p/hypothesis_testing_based_feature_selection.html Filter ...

  4. python基础

    内容概要: 一.python2 or python3 目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流. python2和3区别: 1.PRINT IS ...

  5. Spring异步功能

    使用 Spring 的异步功能时,实质是使用的 Servlet3 及以上版本的异步功能. Spring 的异步处理机制需要在 web.xml 中全部的 servlet 和 filter 处配置 < ...

  6. 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用

    最近经常需要下载一些东西,而这个下载地址又会经过层层跳转,每个页面上都有很多广告,烦不胜烦,所以做了一个一键获得最终下载地址的小工具.使用C#,来获取网页内容,然后通过HtmlAgilityPack获 ...

  7. Centos 7.0 安装Mono 3.4 和 Jexus 5.6

    2013-07-26 写过一篇<CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4>,CentOS 7在CentOS 6的基础上有很大的调整,本文是这篇文章的更新,主要介 ...

  8. ASP.NET 5 改名 ASP.NET Core 1.0

    今天,Scott Hanselman在其博客上宣布<ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0>, ...

  9. 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...

  10. EQueue文件持久化消息关键点设计思路

    要持久化的关键数据有三种 消息: 队列,队列中存放的是消息索引信息,即消息在文件中的物理位置(messageOffset)和在队列中的逻辑位置(queueOffset)的映射信息: 队列消费进度,表示 ...