过渡到状态ui-router

时间:2014-07-06 22:17:45

标签: angularjs angular-ui-router

我有一个http拦截器,如果状态代码为401,则必须重定向到登录页面。

代码如下:

responseError: function(response) {
   if (response.status === 401) {
      $window.sessionStorage.removeItem('token');
      $injector.get('$state').go('guest.login');
   }
   return response || $q.when(response);
}

我在这里定义了guest.login状态:

.state('guest', {
   abstract: true
})

.state('guest.login', {
   templateUrl: 'views/login.html'
   url: '/login',
   controller: 'LoginCtrl'
})

当我的请求返回401错误时,我收到错误:

Could not resolve 'guest.login' from state '...'

我已经尝试了$ state.go和$ state.transitionTo。

我怎么想用ui-router进入我的登录页面?

1 个答案:

答案 0 :(得分:1)

每个州都试图填充其父状态的ui视图。 'guest.login'有父'guest',但'guest'状态没有ui-view。添加它应该解决这个问题。这是ui-router抽象状态的常见缺陷。我希望我们在这里有更好的错误(任何错误)。

state('guest', {
  abstract: true,
  template: '<ui-view/>'
})

阅读本节的“记住”部分:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#abstract-states