我有一个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进入我的登录页面?
答案 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