Я пытаюсь получить несколько json-файлов в цикле. Данные получаются, но в моей функции обратного вызова я остаюсь с последним ключом цикла для каждого результата.AngularJS: выборка данных в цикле с обратным вызовом
Здесь вы абонент:
deckbuilderApp.factory('DeckFactory', ['$http', '$rootScope', 'DataFactory', function($http, $rootScope, DataFactory) {
var cardColors = {"white":{}, "blue":{}, "black":{}, "red":{}, "green":{}, "colorless":{}};
var cardColorsCheck = {"white":true, "blue":true, "black":true, "red":true, "green":true, "colorless":true};
return {
fetchCardColors: function() {
for (key in cardColors) {
if (cardColors.hasOwnProperty(key)) {
DataFactory.cardColors(key, function(cardIds) {
console.log("GOT COLORS FOR " + key);
cardColors[key] = cardIds;
});
}
}
}
}
}
И вызываемый:
deckbuilderApp.factory('DataFactory', function($http) {
return {
cardColors: function(color, callback) {
$http({
method: 'GET',
url: 'js/cardColors/' + color + '.json'
}).success(callback)
}
}
}
Данные, которые получают неправдоподобное законен, но строка журнала всегда печатает «ПОЛУЧИЛ ЦВЕТЫ ДЛЯ бесцветный» последние ключи.
это потому, что ваша функция 'cardColours' является асинхронной. Обратный вызов вызывается после завершения цикла. – Girafa