我已经设置了退出用户的状态。我将其设置为:
.config(['$stateProvider', function ($stateProvider) {
// Now set up the states
$stateProvider.state('login', {
url: '/account/login',
templateUrl: 'app/account/login/login.tpl.html',
controller: 'LoginController',
controllerAs: 'controller'
}).state('logout', {
url: '/account/logout',
resolve: {
logout: ['$state', 'AccountService', function ($state, account) {
console.log('start logging out');
account.logout();
console.log('logging out');
console.log($state);
$state.go('login');
console.log('logged out');
}]
}
});
}])
当我导航到logout状态时,所有console.logs均被命中,但$ state不变。我已经尝试了几件事:
$state.go('login', {}, { reload: true });
和
$state.go($state.current, {}, { reload: true });
和
$state.reload();
但是无论我尝试哪一种,我都无法使$ state更改为正确的状态。
有人知道为什么吗?
更新
所以我将状态更改为此:
}).state('logout', {
url: "/account/logout",
templateUrl: '/app/account/logout.tpl.html', // If we don't have a template then the state will not change in our resolve
resolve: {
logout: ['$state', 'AccountService', function ($state, account) {
account.logout();
console.log('logging out');
$state.go('login');
}]
}
});
并且它仍然不会进入登录屏幕。控制台正在记录注销位,如果刷新页面,则实际上已经注销,因此代码可以正常工作。它不会不会重定向...
logout
状态中没有模板,因此它IS更改状态,但是没有视觉变化,因此它始终显示相同的视图。如果要110%确保状态正在更改,请验证url是否正在更改。
controller: function ($scope) {
$scope.$on('refresh-event', refresh);
function refresh() {
//Refresh Logic
}
refresh();
}