2
我最近一直在和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);
}
}
});
我的问题是什么是最好的做法在这里,如果最好的做法是“改写本作只有一项服务“,那项服务会是什么样子?