AngularJS $state不会改变视图

AngularJS $state does not change view

本文关键字:改变 视图 state AngularJS      更新时间:2023-09-26

在我的 AngularJS 应用程序中的 run() 函数中,如果用户未登录,我想将用户发送到登录页面。这是代码:

.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')都不起作用。有谁知道为什么会发生这种情况,我从未遇到过这种情况。

我认为您应该在$stateProvider中检查身份验证而不是run()。你可以做这样的事情:

$stateProvider
  .state('auth', {
    abstract: true,
    resolve: {
      user: ['auth', '$q', function (auth, $q) {
        if (auth.isAuthenticated()) {
          //...
        } else {
          //...
        }
      }]
    }
  })

我认为您的问题可能是状态仍未加载,因此您无法进入该状态...

一种解决方案是设置 timeout 0,以便在堆栈为空后运行。

试试这个:

.run($timeout, $state, ...) {
$timeout(function() {
    $state.go('signin');
},0);

或类似的东西

参考自 :

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