我遇到問題,無法將服務返回值分配給變量。我有兩個控制器(AddProject和EditProject),並且這個功能在它們兩個中,並且我想提供一個服務來避免重複代碼。操縱Promise中的數據並將其返回到服務函數中 - AngularJS
...
.service("UserService", function($http) {
var allUsers;
var usersPromise = $http.get("/users");
usersPromise.then(
function(response) {
allUsers = response.data.map(function(user) {
user._lowername = user.name.toLowerCase();
return user;
});
console.log(allUsers) //It prints the object array
return allUsers;
},
function(error) {
console.log(error);
return error;
});
this.AllUsers = function() {
return allUsers;
}
})
而且在我的控制器我有一個變量: (假設所有需要注射作了)
self.AllUsers = UserService.AllUsers(); //it is undefined
我試圖用$ Q但它得到未定義過。
這哪裏是控制器分配發生了什麼?你確定服務承諾在這項任務之前已經解決了嗎? – Ryan27
難道你不能直接將承諾退還給控制器,讓他們處理分辨率? – noKid
因爲調用方法時'var allUsers'是'undefined'!你應該回報一個承諾。 – estus