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