据我了解,由于共享的服务变量是一个对象,控制器 1 加载到服务的对象应该可以被控制器 2 清楚地看到,而不需要 $watches 或侦听器或任何东西。我错了吗?我怎样才能让它工作?
问问题
93 次
1 回答
3
我已经修复了您的问题:http: //plnkr.co/edit/JNBmsjzdj6SHOSK4kPNh。
您的服务有一个对象,您将其放入 $scope ($scope.item) 上的模型中。到目前为止,一切都很好。但是,您随后使用新的对象引用 ($scope.thisObject) 更新您的服务对象,以便 $scope.item 和 myService.myObject 现在引用完全不同的对象。
您应该只更新对象属性。有关详细信息,请参阅 plunk。
所以不要写:
app.factory('myService',function(){
var service = {
myObject:{},
changeProperty: function(newProperty){
this.myObject = newProperty;
}
};
return service;
});
你应该使用:
app.factory('myService',function(){
var service = {
myObject:{},
changeProperty: function(newProperty){
this.myObject.text = newProperty.text;
}
};
return service;
});
希望有帮助。
于 2013-05-21T20:27:46.060 回答