我有这条路线:
.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?")
行。没有错误,或任何事情。该页面只是正常呈现。
我怀疑我在某个地方犯了一个承诺(这总是被我犯罪的地方),但是我没有看到它。
有任何帮助吗?感谢。
答案 0 :(得分:1)
我发现了问题:
access: function(user){return user.isAdmin().$promise}
应该是这样的:
access: function(user){return user.isAdmin()}
我上面链接的帖子声称我需要$promise
来确保resolve
等待该功能返回它的承诺,但似乎这不是'\ n“案件。