43

どのような場合に angular$watch関数を使用し、いつng-changeangularjs ディレクティブを使用する必要がありますか? 私にとっては、どちらも同じことができます。

それらの間に違いや使用パターンはありますか?

4

1 に答える 1

91

明らかに、それらは同じではありません。1 つはコントローラーでのみ使用されます。もう 1 つは入力要素のディレクティブです。

しかし、それらのアプリケーションでさえ、それらは異なります。

監視式を使用する$watchと、すべてのダイジェスト サイクルで評価され、変更がある場合はハンドラーが呼び出されます。

ではng-change、ハンドラーはイベントに応答して明示的に呼び出されます。

を使用$watchすると、変更はどこからでも発生する可能性があります: ユーザー アクション、コントローラー関数、サービス - すべてがハンドラーをトリガーします。

を使用ng-changeすると、変更は特定の入力要素に対するユーザー アクションに制限されます。

との組み合わせでのみng-change機能することにも注意してください。つまり、式は(詳細についてはドキュメントを参照) が変更された場合にのみ評価されます。これは通常、ユーザーが開始したイベントに応答して発生します。ng-modelng-changengModel.$viewValuengModelController

于 2015-02-04T05:08:21.093 に答える