Когда использовать $watch или ng-change в Angularjs
Когда следует использовать функции angular $watch и при использовании директивы ng-change angularjs? Для меня они оба могут сделать то же самое.
Существуют ли какие-либо различия или шаблоны использования между ними?
Ответ 1
Они не то же самое, ясно. Один используется исключительно в контроллере; другая - директива на входном элементе.
Но даже в их применении они различаются.
Когда вы используете $watch, наблюдаемое выражение будет оцениваться в каждом цикле дайджеста, а если есть изменение, вызывается обработчик.
С ng-change обработчик вызывается явно в ответ на событие.
С $watch изменение может происходить из любого места: действие пользователя, функция контроллера, сервис - все вызовет обработчик.
С ng-change это изменение ограничивается действием пользователя на конкретном элементе ввода.
Следует также отметить, что ng-change работает только в сочетании с ng-model - другими словами, выражение ng-change оценивается только тогда, когда ngModel.$viewValue (см. ngModelController для дополнительной информации) изменяется, что обычно происходит в ответ на инициированное пользователем событие.