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

什么时候应该使用angular $watch函数,以及何时使用ng-change angularjs指令? 对我而言,他们都可以这样做。

他们之间有任何差异或使用模式?

他们是不一样的,显然。 一个仅在控制器中使用; 另一个是input元素的指令。

但即使在他们的应用程序,他们不同

当使用$watch ,将在每个摘要循环中评估监视的expression式,如果发生更改,则调用该处理程序。

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

使用$watch ,更改可以来自任何地方:用户操作,控制器函数,服务 – 都将触发处理程序。

使用ng-change ,更改被限制在特定input元素上的用户操作。

值得注意的是, ng-change 只能ng-model – 换句话说, ng-changeexpression式只有在ngModel.$viewValue时才被评估ngModel.$viewValue (参考ngModelController文档获取更多信息)响应于用户发起的事件而发生。