在 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
文档)更改时评估,这通常发生在响应用户启动的事件时。
什么时候应该使用 angular $watch
函数,什么时候使用 ng-change
angularjs 指令?对我来说,他们都可以做同样的事情。
它们之间有什么区别或使用模式吗?
很明显,它们不一样。一个单独用于控制器;另一个是输入元素上的指令。
但即使在他们的应用中,他们也有所不同。
当您使用 $watch
时,监视的表达式将在每个摘要循环中进行评估,如果有变化,将调用处理程序。
使用 ng-change
,处理程序被显式调用以响应事件。
使用 $watch
,更改可以来自任何地方:用户操作、控制器功能、服务 - 所有这些都会触发处理程序。
对于 ng-change
,更改仅限于用户对特定输入元素的操作。
还值得注意的是,ng-change
仅在 与 ng-model
结合时起作用 - 换句话说,ng-change
表达式是仅在 ngModel.$viewValue
(有关详细信息,请参阅 ngModelController
文档)更改时评估,这通常发生在响应用户启动的事件时。