サービスの戻り値を変数に代入できないという問題があります。私は2つのコントローラ(AddProjectとEditProject)を持っており、この関数は両方にあったので、コードを繰り返さないようにするサービスを作りたかったのです。プロミス内のデータを操作してサービス関数で返す - 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