javascript - ejemplo - Cuándo usar $ watch o ng-change en Angularjs
ng-init (1)
¿Cuándo debo usar las funciones angulares $watch
y cuando uso la directiva ng-change
angularjs? Para mí, ambos pueden hacer lo mismo.
¿Hay diferencias o patrones de uso entre ellos?
No son lo mismo, claramente. Uno se usa únicamente en el controlador; el otro es una directiva sobre un elemento de entrada.
Pero incluso en su aplicación difieren.
Cuando usa $watch
la expresión observada se evaluará en cada ciclo de resumen, y si hay un cambio, se invoca el controlador.
Con ng-change
, el controlador se invoca explícitamente en respuesta a un evento.
Con $watch
, el cambio puede venir de cualquier parte: acción del usuario, función del controlador, servicio: todo activará el controlador.
Con ng-change
, el cambio está restringido a una acción del usuario en un elemento de entrada particular.
También vale la pena señalar que ng-change
solo funciona en combinación con ng-model
; en otras palabras, la expresión ng-change
se evalúa solo cuando se ngModel.$viewValue
(consulte la documentación de ngModelController
para obtener más información), que generalmente sucede en respuesta a un evento iniciado por el usuario.