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

lev*_*evi 43 javascript angularjs angularjs-ng-change

什么时候应该使用角度$watch函数和何时使用ng-changeangularjs指令?对我来说,他们都可以这样做.

它们之间是否存在差异或使用模式?

New*_*Dev 91

它们显然不一样.一个仅用于控制器; 另一个是输入元素的指令.

但即使在他们的应用中他们也不同.

当您使用$watch被监视的表达式时,将在每个摘要周期进行评估,如果有更改,则调用该处理程序.

使用时ng-change,将显式调用处理程序以响应事件.

随着$watch,变化可以来自任何地方:用户行动,控制器功能,服务 - 所有都将触发处理程序.

使用时ng-change,更改仅限于特定输入元素上的用户操作.

还值得指出的是ng-change工作在组合ng-model-换句话说,该ng-change表达式只有当评估ngModel.$viewValue(参考ngModelController文档获取更多信息)被改变,这通常发生在响应用户启动的事件.