いつangular $watch
関数および使用時ng-change
angularjsディレクティブ?私にとって、彼らは両方同じことができます。
それらの間に違いや使用パターンはありますか?
明らかに同じではありません。 1つはコントローラーでのみ使用されます。もう1つは、入力要素のディレクティブです。
しかし、それらのアプリケーションでさえも異なります。
$watch
を使用すると、ダイジェストサイクルごとに監視対象の式が評価され、変更がある場合はハンドラーが呼び出されます。
ng-change
を使用すると、イベントに応答してハンドラーが明示的に呼び出されます。
$watch
を使用すると、ユーザーアクション、コントローラー機能、サービスなど、どこからでも変更を行うことができます。すべてがハンドラーをトリガーします。
ng-change
を使用すると、変更は特定の入力要素に対するユーザーアクションに制限されます。
ng-change
はng-model
と組み合わせてonlyのみで動作することに注意してください。つまり、ng-change
式は、ngModel.$viewValue
(詳細は ngModelController
ドキュメントを参照)が変更された場合にのみ評価されます。これは通常、ユーザーが開始したイベントへの応答で発生します。