리스너가 변경 될 때이를 알리는 일부 서비스에 포함 된 모든 데이터를 가져야합니다. 편집 다음은이 일을 위해 좋은 것이 방법
에게 관찰자 패턴을 보여주는 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
이동 코드를 서비스에지도 작업과 두 컨트롤러에서 해당 서비스를 사용에 대한 귀하의 생각. unds 정말 나쁜. –