Я думаю, что вы идете об этом только немного неправильно.Ваш alert-list
должен отвечать только за отображение и удаление предупреждений, а не за их создание.Оставьте создание предупреждений для ваших контроллеров
Так, например, если вы столкнулись с ошибкой с ApiSerivce:
DemoCtrl(AlertService, ApiService) {
ApiService.submitForm({some:data}).then(function() {
//something successfull happened
}).catch(function(error) {
AlertService.warning("Something bad happened calling the API serivce");
});
}
Затем вы можете изменить свой AlertService для трансляции события, когда новыйсоздается предупреждение, что alert-list
может прослушивать:
factory('AlertService', ["$rootScope", function($rootScope) {
var alertQueue = [];
var addAlert = function(message, type){
message = {message: message, type: type};
alertQueue.push(message)
$rootScope.$broadcast("new-alert"); //notify the list that there are new alerts
};
Так вы бы прослушали его в своем alert-list
:
$scope.$on("new-alert", function() {
self.alertQueue = AlertService.alertQueue;
});
Таким образом, как толькооповещение создано, alert-list
мгновенно обновляется последней очередью оповещений.
Возможно, вы захотите сделать то же самое для удаления оповещения.