Недавно я работал с AngularJS, и я чувствую, что могу ошибаться в парадигме.Контроллеры AngularJS внутри контроллеров
У меня есть контроллер панели (привязанный к ng-repeat), который отслеживает, какие «окна» открываются пользователем. Теперь каждая из этих панелей должна иметь в себе данные, а это значит, что почти у всех из них есть другой контроллер внутри них.
Я прочитал one answer here (with a similar situation), в котором ответ предлагает переписать свой «всплывающий» контроллер как услугу.
Контроллер панели:
app.controller('PaneCtrl', function ($scope, PaneService){
var updatePanes = function(panes){
$scope.panes = panes;
}
// subscribes this controller to the Pane Service
PaneService.registerObserverCallback(updatePanes)
});
Сервис
app.factory('PaneService', function(){
var observerCallbacks=[]
var panes = []
var notifyObservers = function(){
angular.forEach(observerCallbacks, function(callback){
callback(panes);
});
}
return {
createRootPane: function(title, meta, data){
// do stuff
},
toggleSearchPane: function(){
// do stuff
notifyObservers();
},
registerObserverCallback: function(callback){
observerCallbacks.push(callback);
}
}
});
Мой вопрос: что является лучшей практикой здесь, и если лучшая практика «переписать в виде только услуга ", как бы выглядела эта услуга?