如果 AngularJS 自动为创建的每个模型 (ng-model) 创建一个 watch ,我需要知道为什么要使用 $watch 函数。
(当我说模型时,我指的是 Controller 中的一个值,它声明为 `$scope.value = "somethign"edit->,它通过 {{}} 或附加到 View ng-模型)
我的猜测是:
1) 当在模型上检测到变化时,创建复杂的 Action 很有用。不只是更改 View 中的值。
2) 它用于将观察者添加到未作为模型与 View 绑定(bind)的值。 (这可以解决,但这是一个好习惯吗?)
这只是我的猜测,我想知道我是否正确。
此外,如果有任何使用 $watch 的高级方法,请告诉。
谢谢。
最佳答案
如您所说,Angular 为屏幕上的每个绑定(bind)创建一个 $watch。这包括 ng-model
和 {{ ... }}
(以及 ng-repeat
和其他指令)。
您什么时候想创建自己的 $watch 函数?
您的第一个猜测是正确的。如果您需要在模型更改时运行一些代码,则需要对其进行监视。
假设您有一个显示一些图表的指令,并且该指令通过属性接收一些数据。这个想法是在新数据到达时进行一些计算。你是怎样做的?您需要查看该数据。当数据改变时,$watch 触发,你进行计算,然后更新 DOM。
查看示例 here
您的第二点也很有用。 $watch 可以返回任何类型的代码,例如..
$scope.$watch(function() { return service.foo; }, function() { ... });
因此,如果服务上的 foo
发生变化,$watch 将触发。在某些用例中可以派上用场。
关于javascript - 何时在 AngularJS 中使用 $watch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24528369/