Я пытаюсь написать фабрику, которая получает данные из двух источников и использует один источник для расширения данных в другом объекте.
app.factory('information', ['$http', '$q', 'players', 'matches', function($http, $q, players, matches) {
return {
// Returns all matches and players including extra parsing
get: function() {
return players.get().success(function(data) {
players = data;
matches.get().success(function(data) {
matches = data;
for (match in matches) {
matches[match].a_player1 = players.filter(function(player) { return player.username == matches[match].a_player1 })[0];
matches[match].a_player2 = players.filter(function(player) { return player.username == matches[match].a_player2 })[0];
matches[match].b_player1 = players.filter(function(player) { return player.username == matches[match].b_player1 })[0];
matches[match].b_player2 = players.filter(function(player) { return player.username == matches[match].b_player2 })[0];
console.log(matches)
}
return matches;
});
});
},
}
}]);
Оба matches.get()
и players.get()
простые GET
запросы к API, как так:
app.factory('players', function($http) {
return {
get: function() {
return $http({
method: 'GET',
url: '/players',
});
},
}
});
Но приведенный выше код (конечно) возвращает players
объект, а я хочу, чтобы вернуть matches
объект после он объединяется с объектом players
.
Любые советы о том, как это сделать?
Но где бы я анализирую свои данные (цикл 'for in')? –
Везде. То, что я написал, является просто планом, вы можете поместить цикл for после вызова службы после того, как 'var matches = data [1] .data;' –
В этом конкретном примере, поскольку нет зависимости от двух вызовов GET, $ q это лучший вариант. Вложенные $ http, когда у вас есть зависимости. – ABOS