web-dev-qa-db-fra.com

Quand utiliser $ watch ou ng-change dans Angularjs

Quand dois-je utiliser angular $watch fonctions et utilisation ng-change directive angularjs? Pour moi, ils peuvent tous les deux faire de même.

Existe-t-il des différences ou des schémas d'utilisation entre eux?

43
levi

Ce ne sont pas les mêmes, clairement. L'un est utilisé uniquement dans le contrôleur; l'autre est une directive sur un élément d'entrée.

Mais même dans leur application, ils diffèrent.

Lorsque vous utilisez $watch l'expression surveillée sera évaluée à chaque cycle de résumé, et s'il y a un changement, le gestionnaire est appelé.

Avec ng-change, le gestionnaire est invoqué explicitement en réponse à un événement.

Avec $watch, le changement peut venir de n'importe où: action de l'utilisateur, fonction du contrôleur, service - tout déclenchera le gestionnaire.

Avec ng-change, la modification est limitée à une action de l'utilisateur sur un élément d'entrée particulier.

Il convient également de noter que ng-change fonctionne uniquement en combinaison avec ng-model - en d'autres termes, le ng-change l'expression n'est évaluée que lorsque ngModel.$viewValue (reportez-vous à la documentation ngModelController pour plus d'informations) est modifié, ce qui se produit généralement en réponse à un événement déclenché par l'utilisateur.

91
New Dev