【发布时间】:2013-07-12 10:15:24
【问题描述】:
我有一项用于存储一些应用程序通用数据的服务。该服务还可以修改这些数据并对事件做出反应。但是,我无法将更改传播到使用此服务的控制器。
我见过这个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。
标签: angularjs angularjs-service