1
好吧,這讓我很生氣,基本上我正在嘗試創建一個服務來獲取和評估用戶功能,我使用的是WP REST API。我使用restangular來獲取我的JSON數據。在angularJS中創建一個服務,使用restangular promises
在這個階段,我正在測試控制器本身的功能,但無論測試它在哪裏,無論是在我的自定義服務中使用this.method還是在控制器內部,使用或不使用$ scope,結果總是未定義。我知道我錯過了某些東西,或者我在函數內部返回true或false,或者當涉及到JS中的promise時,會有些根本性的不同。下面是代碼:
var current_user = parseInt(o2_i18n.user_id),
currentUserCapabilities,
capability;
$scope.currentUserCan = function(capability) {
if(current_user !== '0') {
wpAPIResource.one('users').get()
.then(function(allUsers){
for (var i = 0; i < allUsers.length; i++) {
if (allUsers[i].id === current_user) {
var currentUserCapabilities = allUsers[i].capabilities;
for(var prop in currentUserCapabilities){
if (capability === prop) {
//$log.log(prop);
return prop;
} else {
//$log.log(prop);
return false;
}
}
}
}
}, function(reason){
$log.error(reason);
});
} else {
//The user is not logged in, therefor no capabilities
return false;
}
};
$log.log($scope.currentUserCan('publish_posts'));
if ($scope.currentUserCan('publish_posts')) {
$log.log('Yes I Can!');
} else {
$log.warn('No Can\'t Do!');
}
謝謝菲爾,像一個魅力。 所以基本上我在這裏錯過的事實是,如果我要返回wpAPesource.one ...(我嘗試過),我的主範圍函數返回了一個承諾,我必須將其作爲承諾來處理,而不是我期望的返回真假值。所以要包裝起來,我必須研究更多的角度承諾,$ q服務,也許我需要刷新我對JS中函數式編程的知識。還有什麼我應該去的?與PHP相比,當作爲JS開發人員思考時,似乎存在更多差異。 –