Angular服务无法执行功能

时间:2016-10-21 08:10:57

标签: javascript angularjs

function loadUserCredentials() {
    var token = new Object();
    token.token = window.localStorage.getItem(LOCAL_TOKEN_KEY);
    $http.post("http://localhost:8080/checkTokenValid",token).then(function(result){
        console.log(result.data.success);
        if(result.data.success){
            useCredentials();
        }
    });
};

每次页面刷新时都会加载loadCredentials(),我正在检查是否在angular.run

进行了身份验证
controlApp.run(function ($location, $rootScope,controlProvider){
    $rootScope.$on('$routeChangeStart',function(event,next,nextParems){
        if (!controlProvider.isAuthenticated()){
            $location.path('/login');
        }
    })
});

我认为这是在loadCredentials完成之前运行的,所以我总是得到登录页面。有什么方法可以推迟angular.run吗?这样我可以让loadCredentials检查用户是否拥有有效令牌。

1 个答案:

答案 0 :(得分:2)

是的,你可以通过$ timeout来做到这一点:

controlApp.run(function ($location, $rootScope, controlProvider, $timeout) {
    $rootScope.$on('$routeChangeStart', function (event, next, nextParems) {
        $timeout(function () {
            if (!controlProvider.isAuthenticated()) {
                $location.path('/login');
            }
        }, 500);
    })
});