更新时间:2022-12-29 09:32:05
您应该包含在当它改变了通知所有侦听器的一些服务的数据全部。 修改这是一个 jsBin 证明了这种方法。
You should have the data all contained in some service that notifies any listeners when it is changed. Edit Here is a jsBin demonstrating this method
观察者模式将有利于这一个:
The observer pattern would be good for this one:
app.factory('MapService', function() {
var observerCallbacks = [];
var markers = [];
var publicMembers = {
addMarker: addMarker,
getMarkers: getMarkers,
registerObserverCallback: registerObserverCallback
}
function addMarker (marker) {
markers.push(marker);
notifyObservers();
};
function getMarkers() {
return markers;
}
function registerObserverCallback(callback){
observerCallbacks.push(callback);
};
function notifyObservers(){
angular.forEach(observerCallbacks, function(callback){
callback();
});
};
return publicMembers;
});
然后在你的控制器就可以可以注入该服务,注册成为观察员,并随时观察被通知(例如,在 addMarker
,您的回调将被执行
app.controller('MyController', function($scope, MapService) {
MapService.registerObserverCallback(function() {
$scope.markers = MapService.getMarkers();
});
});