Wann sollte ich angular $watch
Funktionen verwenden und wenn ng-change
angularjs directive? Für mich können beide dasselbe tun.
Gibt es Unterschiede oder Nutzungsmuster zwischen ihnen?
Wann sollte ich angular $watch
Funktionen verwenden und wenn ng-change
angularjs directive? Für mich können beide dasselbe tun.
Gibt es Unterschiede oder Nutzungsmuster zwischen ihnen?
Sie sind nicht die gleichen, klar. Einer wird ausschließlich in der Steuerung verwendet; der andere ist eine Direktive für ein Eingabeelement.
Aber auch in ihrer Anwendung unterscheiden sie sich.
Wenn Sie $watch
verwenden, wird der überwachte Ausdruck bei jedem Digest-Zyklus ausgewertet, und bei einer Änderung wird der Handler aufgerufen.
Mit ng-change
wird der Handler explizit als Reaktion auf ein Ereignis aufgerufen.
Mit $watch
kann Änderung von überall kommen: Benutzeraktion, Controller-Funktion, Service - alle werden den Handler auslösen.
Mit ng-change
ist die Änderung auf eine Benutzeraktion für ein bestimmtes Eingabeelement beschränkt.
Es lohnt sich auch zu beachten, dass ng-change
mit ng-model
nur in Kombination funktioniert - in anderen Worten, die ng-change
Ausdruck nur ausgewertet, wenn ngModel.$viewValue
(auf ngModelController
Dokumentation für weitere Informationen) geändert wird, die in Reaktion geschieht in der Regel zu einem benutzerinitiierten Ereignis.
$ watch und ng-change macht ungefähr dasselbe, aber ihre Anwendungsfälle sind unterschiedlich. – Ved
Die $ watch überprüft die Werte (alt und neu) und vergleicht sie jedes Mal, wenn etwas den Angular $ Digest-Zyklus auslöst. Die Verwendung von ng-change macht ungefähr dasselbe, aber ich glaube, es ist syntaktisch korrekter zu verwenden. –
Eine andere Frage ziemlich ähnlich: http://stackoverflow.com/questions/19007281/angular-trigger-changes-with-watch-vs-ng-change-ng-checked-etc – Qianyue