在角度路由模块中使用“解析”有什么好处
what's the benefits of using `resolve` in angular route modules
ngRoute
和UI Router
都提供了resolve
url定义的方法,该方法应在加载路由之前解决。我看过很多解释如何使用它的页面,但几乎没有一个定义使用它的好处。目前,我清楚地看到它的一个很好的用法,即防止未经授权访问视图/数据。这种用法与安全性更相关。
在我看到的示例中,它主要用于获取初始数据并将其注入控制器,但我也可以使用控制器中的服务轻松做到这一点。那么为什么要使用resolve
呢?此外,通过使用resolve
我应该在由于某种原因数据不可用时处理rejected
承诺。应该接收该数据的控制器甚至不会被初始化,因此我应该在$rootScope
上处理routeChangeFailed
事件以决定如何继续。此外,我还应该以某种方式传递有关什么路由失败以及原因的信息。
所以,再次提出两个问题:
1( 使用resolve
方法进行数据检索有什么好处?
2( 处理拒绝/数据检索失败情况的常用方法是什么?
附言。任何关于该主题的好读物都受到高度赞赏。
你使用解析方法进行数据检索有什么好处?
不希望你的视图在你得到所需的数据之前渲染,这就是在路由中使用resolve
的目的。
显示一半的视图而没有{{necessary. requirements}}
是没有用的(这些括号是故意的(
授权数据,作为视图主要部分的数据或在视图呈现之前未加载的数据将从视图(模板(中取出值,最好在实际呈现view
之前加载
例如,您的用户配置文件主要包含用户数据,如果没有实际数据,使用数十个ng-if渲染视图是没有用的不是吗?
处理拒绝/失败数据的常用方法是什么 检索情况
redirecting
其他routes
或路由是首选,但它会影响逻辑。
您可以在$routechangerror或再次捕获拒绝,这取决于您的逻辑
处理拒绝的简单示例:
路由解析
.when('/seedata',
{
templateUrl: '/partials/seedata.html',
controller: 'abcCtrl',
resolve: {
data : function(dataService){
if(dataService.hasData()) {
return true;
}
else {
return $q.reject('no data');
}
}
}
});
在运行阶段处理解析
angular.module('test').run(function($rootScope, $location) {
$rootScope.$on('$routeChangeError', function(evt, current, previous, rejection) {
if(rejection === 'no data') {
$location.path('#/wait');
}
})
})
- 将JS文件解析为PHP的副作用是什么
- 在角度路由模块中使用“解析”有什么好处
- 解析本网站的正确方法是什么
- 命令行上的输入在什么时候解析为 node.js 中的 process.argv
- 我用什么javascript解析器在node的javascript中重新实现jsCoverage
- 什么时候是“;“安全”;以在解析文档时修改给定的html元素/节点
- 使用PEG解析器进行BBCode解析:pegjs或..什么
- DOM解析,加载,渲染,就绪有什么区别
- 将字符串解析为一系列转义十六进制字符的方法是什么
- 这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
- 处理、解析和流式传输大型文本文件的实用方法是什么
- Chrome 和 Firefox 以及浏览器在解析字符串的方式上有什么区别吗?
- 当解析云函数返回承诺时会发生什么
- 在javascript中解析这个正则表达式时,我做错了什么
- 在ES6 Promise中允许多次解析/拒绝的原因是什么
- 什么'解析Javascript和解析云代码之间的区别
- 什么是代码解析
- 在Node.js中读取和解析数字ASCII对文件的最快方法是什么
- DOJO:以某种格式从RESTful API获取JSON结果,以及接下来要做什么来解析结果并将其放入变量中
- String.charAt() 在给定一个无法解析为 int 的字符串的情况下返回什么