0

これが私のプランカーです:

私が理解していることから、共有されるサービス変数はオブジェクトであるため、コントローラー 1 によってサービスにロードされるオブジェクトは、$watches やリスナーなどを必要とせずに、コントローラー 2 によって明確に表示されるはずです。私が間違っている?どうすればこれを機能させることができますか?

4

1 に答える 1

3

私はあなたのプランクを修正しました: http://plnkr.co/edit/JNBmsjzdj6SHOSK4kPNh .

サービスには、$scope ($scope.item) のモデルに入れるオブジェクトがあります。ここまでは順調ですね。ただし、サービス オブジェクトを新しいオブジェクト参照 ($scope.thisObject) で更新して、$scope.item と myService.myObject が完全に異なるオブジェクトを参照するようにします。

オブジェクトのプロパティのみを更新する必要があります。詳細については、プランクを参照してください。

したがって、書く代わりに:

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 に答える