Я создаю приложение в angular, которое потребляет различные API-интерфейсы и предоставляет параметры для выбора пользователем, который будет записан и отправлен обратно на сервер.
Я разработал его следующим образом.
- Вся общая логика в Main Controller и все другие опции в разных контроллерах в качестве дочернего элемента основного контроллера.
- Главный контроллер получает все данные, необходимые для запуска приложения. который потребляется всеми другими дочерними контроллерами.
- Чтобы убедиться, что данные загружены, я использую обещание, привязанное к области видимости. Таким образом, все дочерние контроллеры будут знать загруженные данные.
- Я переместил часть обновления данных всех дочерних контроллеров на главный контроллер потому что все обновления происходят в одном объекте.
- Ребенок Контроллер излучает/транслирует для связи между дочерним и основным. Поэтому, когда обновление происходит, дочерний элемент будет генерировать событие с данными, которые будут захвачены Main, и он будет выполнять обновление.
MainController { $scope.loaded = DataService.get(); $scope.userOptions = {}; $scope.$on('update',function(){ updateUserOptions(); }) } ChildController { $scope.loaded.then(function(){ //all logic of child controller } $scope.onselect = function(){ $scope.$emit('update',data); } }
Вопросы
- Хорошо ли использовать события между контроллерами?
- Хорошо ли использовать обещание, связанное с возможностями для дочерних контроллеров?
- Будет ли улучшен мой код, если я начну использовать сервисы?