在我的运行()函数的AngularJS应用程序中,如果用户没有登录,我想将用户发送到登录页面。这是代码:
.run(['$state', function($state)
{
$state.go('signin')
.then(function(promise){},
function(reject)
{
console.log(reject)
}
);
}]);
在控制台中我得到以下信息:
Error: transition superseded {stack: (...), message: "transition superseded"}
$state.transitionTo('signin')
都不起作用。有谁知道为什么会这样,我从来没有遇到过这个。
答案 0 :(得分:1)
我认为您应该在$stateProvider
而不是run()
中检查身份验证。你可以这样做:
$stateProvider
.state('auth', {
abstract: true,
resolve: {
user: ['auth', '$q', function (auth, $q) {
if (auth.isAuthenticated()) {
//...
} else {
//...
}
}]
}
})
答案 1 :(得分:0)
我认为您的问题可能是状态仍未加载,因此您无法进入该状态...
解决方案是设置超时0,以便在堆栈为空后运行它。
试试这个:
.run($timeout, $state, ...) {
$timeout(function() {
$state.go('signin');
},0);
或类似的东西
来自: