Angular.js Директива следящая за результатами запросов к API сервера

В Angular'е я еще зелен, поэтому часто возникают вопросы как делать правильно те или иные вещи.

Я хочу реализовать следующий функционал:
Например, у нас есть Админка. Я хочу чтобы в ее layout'e была директива, которая будет отображать результат запроса к API сервера в виде какого-нибудь текста (например, 'success' или 'try later'). То есть пользователь что-то там правит, нажимает "Сохранить" и ему отображалось: "Ок" или "не ок" - после ответа от сервера.
Соответственно разных контроллеров и вьюх полно и как между всеми ими все это передавать мне не очень понятно. Само общение с сервером происходит через сервисы.
Следить за какой-то глобальной переменной, которую изменять в ответах на запросы? - как-то не очень вариант, по-моему.
Видел в гугле вариант с сервисом. То есть директива следит за сервисом, а сервис у себя помечает success или error исходя из ответа сервера. Но у меня не один сервис. Тогда получается, что в директиву надо будет все сервисы подключать и смотреть за результатами всех выполнений. Как-то сложно получается. И каждый раз написав новый сервис надо будет не забыть подключить его и в директиву.
Думается мне, что можно как-то сделать хорошо и правильно, просто я еще не знаю как. Собственно в этом и вопрос - как делать правильнее всего?
  • Вопрос задан
  • 2654 просмотра
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
.controller('MyCtrl', function ($scope, myDataProvider, flashBag) {
    myDataProvider.getData()
        .then(function () {
              flashBag.success('All done!');
        }, function () {
              flashBag.error('Something went wrong...');
        });
})


как-то так.

Реализаций подобного хватает
Ответ написан
maxaon
@maxaon
Для этого вам понадобятся три вещи.
1. Промежуточный сервис, который будет хранить ваши данные (состояние запроса, количество запросов и др)
2. Директива, которая будет отображать состояние сервиса.
3. Фабрика(или провайдер) который будет создавать кастомные обертки для апии и соответственно менять состояние промежуточного сервиса. Вариантоа вариантов много.
a. Использовать Restangular и установить RequestInterceptor и ResponseInterceptor
Изменять состояние сервиса в них. Даже не надо будет писать свою фабрику.
b. Декорировать ngresource (или использовать внутри фабрики).
с. Написать все с нуля. (Или скопировать ngResource, что есть плохо).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы