AngularJS $ state不会更改视图

时间:2015-06-15 09:52:02

标签: javascript angularjs angular-ui-router

在我的运行()函数的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')都不起作用。有谁知道为什么会这样,我从来没有遇到过这个。

2 个答案:

答案 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);

或类似的东西

来自:

  

module.run() and $state.go() angularJS