Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角js如何观察对象中的突变?_Javascript_Angularjs - Fatal编程技术网

Javascript 角js如何观察对象中的突变?

Javascript 角js如何观察对象中的突变?,javascript,angularjs,Javascript,Angularjs,我很想知道angular js如何观察添加到$scope的属性发生的变化。从HTML的角度来看,我能够理解,我们有一些事件,只要有变化就会触发。但是当它涉及到一个物体时,我无法理解它实际上是如何工作的。我可以看到我们有一个名为Object的函数。但这也是不赞成的书面形式。我非常确定angular不使用Object.observe。angular博士说,人们可以使用$watch和$watchCollection来观察突变。但我不知道这些是如何得到通知的。有人能帮上忙吗?Angular实际上会复制被

我很想知道angular js如何观察添加到
$scope
的属性发生的变化。从HTML的角度来看,我能够理解,我们有一些事件,只要有变化就会触发。但是当它涉及到一个物体时,我无法理解它实际上是如何工作的。我可以看到我们有一个名为
Object的函数。但这也是不赞成的书面形式。我非常确定angular不使用Object.observe。angular博士说,人们可以使用
$watch
$watchCollection
来观察突变。但我不知道这些是如何得到通知的。有人能帮上忙吗?

Angular实际上会复制被监视对象的副本,并在每个摘要循环中将其与之进行比较。因此,当情况发生变化时,没有通知。它会在每个循环中查找更改。这就是为什么看电影会很贵。您拥有的手表越多,需要进行的比较就越多。在发现更改的情况下,您可能会重新运行一次,以确保检测到的更改不会影响您已检查的一个监视对象

我推荐泰罗·帕维亚宁的书。尽管这不是一个100%精确的源代码,但概念是一样的,你会对angular的工作原理有很好的了解


理解这一部分的另一个来源是本章。与Teros书相比,这一概念在书中的描述更“容易理解”。

也许可以检查一下:这:-第二个是关于
$watch
@chalarangelo:我不认为这是他们所问的-他们想知道Angular的变化跟踪是如何工作的,不是如何观看DOM。我想知道我有$scope.name='Hitesh Kumar'。现在,如果我将其更改为$scope.name='HK',那么angular js将如何得到通知。明白了。非常感谢。:)不客气。还添加了“ng图书”的链接。