通过服务在控制器之间共享变量

时间:2013-05-21 20:03:19

标签: javascript angularjs angularjs-service angularjs-controller

Here is my plunker:

据我所知,由于共享的服务变量是一个对象,控制器1可以清楚地看到控制器1加载到服务的对象,而不需要$ watch或listener或任何东西。我错了吗?我怎样才能让它发挥作用?

1 个答案:

答案 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;
});

希望有所帮助。