javascript - 何时在 AngularJS 中使用 $watch

标签 javascript angularjs controller watch

如果 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/

相关文章:

javascript - 自动完成功能消除了对移动 View 的关注

javascript - OnClick() 从外部 js 文件调用 Jquery 函数

javascript - 来自 Amazon S3 存储桶的图像在第一次请求中未显示

javascript - ng-repeat 数组的关联数组?

python-3.x - 在 Tkinter 的 MCV 设计模式中,控制窗口属性的函数应该放在哪里?

javascript - 我应该在index.html 中包含所有 Controller 的所有脚本标签吗?

javascript - 如何禁用 php 中的日期数组

javascript - 如何加载/构建 Chrome 应用程序/扩展程序并以编程方式运行

jquery - AngularJS 和指令的初学者问题 - 包装 jQuery 组件

api - 如何执行 DotNetNuke WebAPI 更新/删除?