gpt4 book ai didi

angularjs - 如何在 ui-router 解析器中重定向?

转载 作者:行者123 更新时间:2023-12-02 21:59:43 24 4
gpt4 key购买 nike

我正在尝试在 ui-router 解析器内部进行重定向,并想知道是否有办法在路由器解析器中重新路由。目前这并不像人们想象的那样有效。

resolver(auth, $state){
if(!auth.isLoggedIn()){
$state.go('noLoggedInPath');
}
}

如何在解析器中正确重定向?

我的临时黑客是这样的,但我对此感到不舒服。

resolver(auth, $state, $timeout){
if(!auth.isLoggedIn()){
$timeout(function () {

$state.go('noLoggedInPath');
}, 0);
}
}

最佳答案

Yauheni 的答案确实有效,但是为了解决奇怪的超时问题,您可以拒绝 promise ,并在 $stateChangeError 事件中捕获它,然后在那里进行重定向。就像这样...

state('admin', {
resolve: {
auth: function(UserService, $q, permissionService) {
var deferred = $q.defer();
return UserService.load().then(function(user){
if (permissionService.can(user, {goTo: state})) {
return deferred.resolve({});
} else {
return deferred.reject({redirectTo: 'some_other_state'});
}
});
}
}
});

然后 ui-router 总是广播“stateChangeError”,所以你可以做这样的事情..

$rootScope.$on('$stateChangeError', function(evt, to, toParams, from, fromParams, error) {
if (error.redirectTo) {
$state.go(error.redirectTo);
} else {
$state.go('error', {status: error.status})
}
})

关于angularjs - 如何在 ui-router 解析器中重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com