Имеется простой шаринг данных между контроллерами
.factory('Games', function () {
var games = {
list: []
}
return {
get: getGames,
set: setGames,
};
function getGames() {
return games;
}
function setGames(gamesList) {
games.list = gamesList;
}
})
Дальше контроллеры используют эту фабрику чтобы взять данные
.controller('MyCtrl1', function($scope,Games){
$scope.games = Games.get()
});
.controller('MyCtrl2', function($scope,Games){
$scope.games = Games.get()
});
и так далее
Данные я получаю из API запроса. Соответственно я смотрю в контролерах
.controller('MyCtrl1', function($scope,Games,$http){
$scope.games = Games.get()
// если нету данных в фабрике - запросить их и засетить
if (!$scope.games.list.length) {
$http(....).then(function(response)) {
Games.set(response.data)
}
}
});
И так во всех конроллерах.
Из за этого возникает проблема, если я имею на странице несколько таких контроллеров то все они одновременно запрашивают данные.
Как решить данную проблему? Возможно запрашивать данные в фабрике? Как это правильнее организовать, чтобы все обошлось одним запросом на сервер.