일부 애플리케이션 공통 데이터를 저장하는 서비스가 있습니다. 이 서비스는이 데이터를 수정하고 이벤트에 대응할 수도 있습니다. 그러나이 서비스를 사용하는 컨트롤러에 변경 사항을 전파하는 데 문제가 있습니다.서비스중인 데이터의 컨트롤러로의 변경 적용
나는이 question과이 question을 보았지만 그 해결책은 나를 위해 작동하지 않습니다.
내 핵심 문제를 나타내는 plunker을 만들었습니다. object
공통 데이터를 sharedObject
에 저장하는 서비스가 있습니다. 그것은 기능을 updateObject
, 데이터를 업데이트 할 수 있습니다 (내 실제 애플 리케이션에서 서버에 요청을 보냅니다). 이 서비스는 주 컨트롤러에서 사용됩니다. 그러나 서비스에서 updateObject
이 호출되면 컨트롤러에서 데이터가 업데이트되지 않습니다.
왜 그럴까요? 또한 이것이 최선의 관행입니까 아니면 내가 틀린 일을하고 있습니까?
여기에 코드입니다 :
app = angular.module('app', []);
app.factory('object', ['$timeout', function($timeout){
var sharedObject = {attr1: '', attr2: ''};
var updateObject = function() {
$timeout(function(){
sharedObject = {attr1: 'new value', attr2: 'update value'};
console.log('updated');
}, 1000);
}
updateObject();
return sharedObject;
}]);
app.controller('main', [
'$scope', 'object', function($scope, object) {
$scope.$watch(function(){return object}, function(obj){
console.log(obj);
$scope.object1 = obj;
}, true);
}
]);
가 plunker뿐만 아니라, 여기에 코드를 게시하시기 바랍니다 업데이트 방법 같은 것을 할 필요가 기본적으로
plunkr 업데이트. –