[英]Rejected resolve promise not caught
我有這條路線:
.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?")
行。 沒有錯誤,或任何東西。 該頁面僅呈現正常的效果。
我懷疑我在某處的承諾中被犯規了(那總是我被犯規的地方),但是我沒有看到。
有什么幫助嗎? 謝謝。
我發現了問題:
access: function(user){return user.isAdmin().$promise}
應該是這樣的:
access: function(user){return user.isAdmin()}
我在上面鏈接的帖子聲稱我需要有$promise
來確保resolve
等待函數返回它的promise,但事實並非如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.