0

这是我的笨蛋:

据我了解,由于共享的服务变量是一个对象,控制器 1 加载到服务的对象应该可以被控制器 2 清楚地看到,而不需要 $watches 或侦听器或任何东西。我错了吗?我怎样才能让它工作?

4

1 回答 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 回答