ng-change pass value (1)
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.
ng-change, the handler is invoked explicitly in response to an event.
$watch, change can come from anywhere: user action, controller function, service - all will trigger the handler.
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.