Angularjs 重定向:解析vs onEnter
如果某些条件不正确,我想重定向用户。(通常在他没有联系的情况下) 我有两个解决方案来重定向stackoverflow或ui router wiki上的用户。但是我不明白他们什么时候行动,什么是对我的用例最好的Angularjs 重定向:解析vs onEnter,angularjs,angular-ui-router,Angularjs,Angular Ui Router,如果某些条件不正确,我想重定向用户。(通常在他没有联系的情况下) 我有两个解决方案来重定向stackoverflow或ui router wiki上的用户。但是我不明白他们什么时候行动,什么是对我的用例最好的 { name: 'example', url: "/example/:idExample", templateUrl: '[...]', controller: '[...]', controllerAs: '[...]', onEnter:
{
name: 'example',
url: "/example/:idExample",
templateUrl: '[...]',
controller: '[...]',
controllerAs: '[...]',
onEnter: ['connectedUser', function (connectedUser) {
console.log("On Enter");
if (condition) {
//redirect;
}
}],
resolve: {
canAccess: function canAccess(connectedUser) {
console.log("CanAccess");
if (condition) {
$timeout(function () {
//redirect
}, 0);
return $q.reject()
}
}
}
}
这两种方法都很有效,但是$timeout在我看来并不漂亮。然而,似乎在OneNet之前就调用了resolve,可能更好地防止一些无用的负载?当使用其中一个或另一个时,我无法正确理解。Resolve可用于首先执行一些操作,以查看用户是否可以进入该状态。当用户已经处于状态,然后执行一些操作时,通常使用oneter。因此,对于您的用例,我将使用
resolve
它取决于重定向是什么。真的有必要吗?通常,您可能只想在解析器中解析/拒绝承诺。并在状态错误处理程序中对拒绝的承诺执行重定向。可以使用Resolve首先执行一些操作,以查看用户是否可以进入状态。当用户已经处于状态,然后执行一些操作时,通常使用oneter。因此,对于您的用例,我将使用resolve
它取决于重定向是什么。真的有必要吗?通常,您可能只想在解析器中解析/拒绝承诺。并在状态错误处理程序中对拒绝的承诺执行重定向。