0

特定のコントローラー プロパティの変更の更新に反応するコントローラーを作成しています。そのためのテストを書いていますが、モデルを更新するコードの前に $watch コールバックが呼び出されていることに気付きました。

さらに、時期尚早の $watch コールバック呼び出しとモデルを更新するコードの後、$watch コールバックは再度呼び出されません。

コントローラーのインスタンス化中に $watch コールバックが呼び出され、式オブザーバーが構成されていないなどのようです。

皆さんはどう思いますか?

4

1 に答える 1

2

まあ、scope.$watchそれをすることになっている、すぐに発砲します。それが初更新です。それは最初の発火を行い、その後の発火は実際の変更のためにのみ発生します。最初の実行 if を検出できますnewValue === oldValue。ここで、これらは watch コールバックの最初と 2 番目のパラメーターです。

再度呼び出されない理由については、スコープ プロパティを通常の Angular コンテキスト外で変更していますか? その場合、 が必要になりますscope.$apply

于 2012-12-18T04:41:29.307 に答える