被拒绝的决心承诺没有被抓住

时间:2016-09-27 17:46:14

标签: angularjs angular-ui-router

我的工作部分来自this帖子和this回复。

我有这条路线:

.state('barcodeQuery', {
    url:'/barcode',
    templateUrl: templatePath + '_BarcodeQuery.html',
    controller: 'BarcodeQueryCtrl',
    controllerAs: 'vm',
    requireADLogin: true,
    resolve: {
        user: 'user',
        access: function(user){return user.isAdmin().$promise}
    }
})

user.isAdmin如下所示:

isAdmin: function() {
    return this.getProfile().then(function(data){
        // then return the response.
        if(data.isadmin) {
            return true;
        }
        else {
            return $q.reject(false);
        }
    });
},

据我所知,到目前为止一切正常。 isAdmin()确实会返回正确的响应,具体取决于用户。

事情在这里开始出错了:

$rootScope.$on("$stateChangeError", function (event, current, previous, rejection) {
    console.log("Is this thing on?");
});

如果.isAdmin()拒绝承诺,那么应该有$stateChangeEror,对吧?但在我的代码中,这不会发生。永远不会到达console.log("Is this thing on?")行。没有错误,或任何事情。该页面只是正常呈现。

我怀疑我在某个地方犯了一个承诺(这总是被我犯罪的地方),但是我没有看到它。

有任何帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

我发现了问题:

access: function(user){return user.isAdmin().$promise}

应该是这样的:

access: function(user){return user.isAdmin()}

我上面链接的帖子声称我需要$promise来确保resolve等待该功能返回它的承诺,但似乎这不是'\ n“案件。