61

サービス内のオブジェクトの配列にを設定することは可能ですか(宣言自体を$watchサービス内に配置したいのですが)?$watch

4

4 に答える 4

121

を注入$rootScopeし、関数をメソッドの最初の引数として使用することで、ウォッチのセットに任意の式を追加でき$watchます。擬似コード:

$rootScope.$watch(function() {
  return //value to be watched;
}, function watchCallback(newValue, oldValue) {
  //react on value change here
});

メソッドの 3 番目のブール引数を忘れないでください$watchtrueオブジェクト全体の変更を詳細に監視するかどうかを指定する必要があります。

于 2013-07-23T09:52:29.613 に答える
0

達成したいことを明確にできますか?私が理解しているように、モデルとしてサーバーからオブジェクトの配列を取得しています。それからそれは明らかではありません:

  1. 配列内の一部のオブジェクトが変更されているかどうかを確認しますか (反復プーリングを行う場合、サーバーへの最後の呼び出し以降)?
  2. 配列内の一部のオブジェクトがフロントエンド コントロール要素を介してユーザーによって変更されたかどうかを確認しますか?

ケース 1 では、実際には $watch (またはむしろ $watchCollection) を使用する必要はありませんが、サーバーから受け取った配列を繰り返し処理し、変更を検証する必要があります ($watchColleciton が行うことと同じです)。オブジェクトが現在保持しているものと異なる場合は、この要素で object.$save() を呼び出します。

ケース 2 では、サービス関数にパラメーターとして渡された $scope で $watchCollection() を使用するか、$rootScope に配列を保持している場合は $rootScope を使用します。

シナリオを明確にしていただければ、実際のコードを提供できます。

于 2014-03-25T01:51:16.367 に答える