AngularJS — как правильно организовать запросы в разных контроллерах и директивах?
Вопрос по правильной организации ajax-запросов. Ситуация:
Есть MainCtrl, главный контроллер на уровне тега html - существующий на каждой странице сайта.
Есть CatalogCtrl, контроллер в каталоге товаров в магазине.
Для MainCtrl, в ng-init, выполняется запрос на получение информации о пользователе (имя, товары в корзине, гость/авторизованный)
Для CatalogCtrl, в ng-init, выполняется запрос на получение фильтров каталога и прочей доп.инфы, затем на основе фильтров идёт запрос на получение товаров
Вопрос - правильно ли так?) Запросы отправляются не через сервисы, а в $scope.loadItems = function(){ $http() /*... */ } и тому подобных вещах. Как правильно организовывать запросы на получение информации в разных контроллерах?
MainCtrl переместить в сервис, так как по сути информация внутри общая и должна быть доступна для разных контроллеров.
Какие-то доп. данные можно инжектить через подключение constant/value для индивидуальных страниц, либо напрямую инжектить в сервис через injector.
Все запросы желательно перенести в сервисы.
Естественно, это не очень хорошо. Например, у меня при инициализации страницы заказов, непосредственно на этой странице находится инлайн скрипт, который добавляет value/constant сервис(с данными, которые актуальны именно для этой страницы) в основной модуль.
Соответственно этот сервис уже используется в нужных контроллерах.
Т.е. как таковой не используется один общий сервис.
нет. это не правильно. как минимум инджектить сервис $http в контроллеры это уже сомнительное решение а то что делаете вы это совсем плохо. У вас есть метод run модуля, у вас есть контроллеры... зачем это выносить в темплейты? Это не их зона ответственности.
ng-init задумывался как хелпер для ngRepeat, использовать его для чего-то другого не рекомендуется.