When should I use angular $watch
functions and when use ng-change
angularjs directive? To me, they both can do the same.
Are there any differences or usage patterns between them?
They are not the same, clearly. One is used solely in the controller; the other is a directive on an input element.
But even in their application they differ.
When you use $watch
the watched expression will be evaluated on every digest cycle, and if there is a change, the handler is invoked.
With ng-change
, the handler is invoked explicitly in response to an event.
With $watch
, change can come from anywhere: user action, controller function, service - all will trigger the handler.
With ng-change
, the change is restricted to a user action on a particular input element.
It is worth to note also that ng-change
works only in combination with ng-model
- in other words, the ng-change
expression is evaluated only when ngModel.$viewValue
(refer to ngModelController
documentation for more info) is changed, which typically happens in response to a user-initiated event.
来源:https://stackoverflow.com/questions/28313865/when-to-use-watch-or-ng-change-in-angularjs