javascript - Angular 服务无法执行功能

标签 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 检查用户是否拥有有效 token 。

最佳答案

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

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

关于javascript - Angular 服务无法执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171488/

相关文章:

Javascript 替换标题 =""以外的所有内容

javascript - Github 的 markdown API 和 Javascript

javascript - 菜单中的 ng-mouseover 指令 angularjs

javascript - 如何将新项目添加到srt文件中

javascript - TweenLite 动画突然改变元素的位置?

javascript - 当任务失败时 Gulp 返回 0

javascript - XMLHttpRequest 无法加载文件。仅 HTTP 支持跨源请求。 Angular.js

c# - 使用可选的 +88 或 01 前面的 11 位数字验证孟加拉国电话号码

javascript - 在 ng-repeat 循环中使用单选按钮似乎会使模型混淆

angularjs - 分页的智能表格-默认设置最后一页