据我所知,由于共享的服务变量是一个对象,控制器1可以清楚地看到控制器1加载到服务的对象,而不需要$ watch或listener或任何东西。我错了吗?我怎样才能让它发挥作用?
答案 0 :(得分: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;
});
希望有所帮助。