在 Angularjs 中何时使用 $watch 或 ng-change

When to use $watch or ng-change in Angularjs

什么时候应该使用 angular $watch 函数,什么时候使用 ng-change angularjs 指令?对我来说,他们都可以做同样的事情。

它们之间有什么区别或使用模式吗?

很明显,它们不一样。一个单独用于控制器;另一个是输入元素上的指令。

但即使在他们的应用中,他们也有所不同。

当您使用 $watch 时,监视的表达式将在每个摘要循环中进行评估,如果有变化,将调用处理程序。

使用 ng-change,处理程序被显式调用以响应事件。

使用 $watch,更改可以来自任何地方:用户操作、控制器功能、服务 - 所有这些都会触发处理程序。

对于 ng-change,更改仅限于用户对特定输入元素的操作。

还值得注意的是,ng-change 仅在 ng-model 结合时起作用 - 换句话说,ng-change 表达式是仅在 ngModel.$viewValue(有关详细信息,请参阅 ngModelController 文档)更改时评估,这通常发生在响应用户启动的事件时。