Есть ли простой способ вызывать API только один раз в директиве, когда используется несколько раз в поле зрения
Я сделал директиву, которая делает выпадающий список и заполняет его из API. Оно работает. Однако, когда я использовал эту директиву несколько раз в представлении, она вызывает несколько вызовов API для заполнения раскрывающегося списка.
Поэтому мне было интересно, есть ли какой-нибудь простой способ избежать этого. Не очень простым способом было бы поместить $http в службу, которая каким-то образом выполняет кэширование.
директива
app.directive('dropdown', function() {
return {
// omitted...
controller: function($scope, $http) {
$http.get("...")...;
}
};
});
Посмотреть
<dropdown></dropdown>
<dropdown></dropdown>
1 ответ
Для обработки ваших запросов $http лучше использовать сервис, который также позволит вам кэшировать данные.
В этом конкретном случае вы будете хранить свои данные в объекте в службе, и каждый раз, когда вы загружаете директиву и вызываете метод сервиса getMyData(бла), вы будете проверять, существуют ли данные уже в объекте, и отменять вызов API, в противном случае выполните $http.get.