您應該將某些服務中包含的數據全部包含在通知任何監聽者更改時的服務中。 編輯這裏是一個jsBin證明了該方法
觀察者模式將有利於這一個:
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();
});
});
來源
2014-08-30 21:43:18
Tom
移動的代碼,使用地圖的服務,並使用該服務在兩個控制器你的想法左右。非常糟糕。 – 2014-08-30 21:35:48