我设置了一个用于注销用户的状态。我把它设置成这样:
.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');
}]
}
});
}])
当我导航到注销状态时,所有的console.log都被点击,但$ 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');
}]
}
});
它仍然没有进入登录界面。控制台正在记录注销位,如果我刷新页面,我实际上已经注销,因此代码工作正常。它不会重定向......
答案 0 :(得分:0)
logout
状态中没有模板,因此 IS 更改状态,但没有视觉上的变化,因此它会一直显示相同的视图。如果您希望110%确定状态正在发生变化,请验证 url 是否正在发生变化。
答案 1 :(得分:0)
controller: function ($scope) {
$scope.$on('refresh-event', refresh);
function refresh() {
//Refresh Logic
}
refresh();
}