Есть ли простой способ вызывать 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.

Другие вопросы по тегам