angular $ state.reload不工作

时间:2015-04-01 01:33:11

标签: angularjs angular-ui-router

我设置了一个用于注销用户的状态。我把它设置成这样:

.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');
        }]
    }
});

它仍然没有进入登录界面。控制台正在记录注销位,如果我刷新页面,我实际上已经注销,因此代码工作正常。它不会重定向......

2 个答案:

答案 0 :(得分:0)

logout状态中没有模板,因此 IS 更改状态,但没有视觉上的变化,因此它会一直显示相同的视图。如果您希望110%确定状态正在发生变化,请验证 url 是否正在发生变化。

答案 1 :(得分:0)

  controller: function ($scope) {
            $scope.$on('refresh-event', refresh);
            function refresh() {
                //Refresh Logic
            }
            refresh();
        }