在ui-router中使用event.preventDefault()会导致无限循环

时间:2016-06-02 20:52:30

标签: javascript angularjs angular-ui-router

错误:

enter image description here

是的我知道有类似的帖子,但他们没有解决我的问题。我想完全控制应用程序的路由。我的代码如下:

需要注意的一点是,我已将自定义属性附加到名为authenticate的状态,该状态具有truefalse值。我还创建了一个简单的函数get user。它只是从api中检索用户。

$rootScope.$on('$stateChangeStart', function(event, toState) {
  event.preventDefault();
  let token = $cookies.get('token');

  if (toState.authenticate) {
    if (token) {
      getUser()
        .then(user => {
          $rootScope.user = user;
          $state.go(toState.name);
        })
        .catch(err => console.log(err));
    } else {
        $state.go('login');
    }
  } else {
      $state.go(toState.name);
  }
});

我首先检查状态是否需要身份验证。如果不是,我们只是继续到州。如果确实需要身份验证,我们会检查是否有令牌。如果有我们使用我前面提到的功能获取用户。如果没有令牌,我们会将用户发送到登录状态。

0 个答案:

没有答案