$ q.all()を使用して複数の応答を取得すると、同じ値が返されます。私は約束の宣言と同じくらい多くのオブジェクトを取得しますが、すべての「名前」フィールドは同じ値(最後のもの、3)を持ちます。
.controller('myCtrl', function ($scope, $state, $q, myService) {
$scope.myList = [];
$scope.create = function() {
var newObject;
var promises = [];
for(var i = 0; i < 4; i++){
newObject = { name: i };
promises[i] = myService.create(newObject);
}
$q.all(promises).then(
function (response) {
$scope.myList = response;
}
);
};
}
そして、ここに私のサービスです:
.service('myService', function ($http, $q, baseURL) {
this.create = function(object) {
var deferred = $q.defer();
//console.log shows that object still has the proper 'name' value
$http.post(url, object).then(
function (response) {
// console.log shows that all response objects have the same 'name' value.
deferred.resolve(response);
}
);
return deferred.promise;
};
}
それは角度での約束に私の最初のアプローチですので、任意の入力が認識されます。
'promises [p] = myService.create(newObject);'の 'p'は何ですか? – stevenelberger
タイポ、上に固定、ありがとう!問題は残っています –
この行のオブジェクト '$ http.post(url、object)'はすべて正しい名前を持っていますが、then関数の中では、それぞれの 'response'オブジェクトは同じ名前の値を持っていますか? – stevenelberger