我想了解Angular1 $摘要周期。我在多篇文章中读到,每次更改都会多次调用摘要周期。
在this文章中说:
因此,一旦我们遍历$ watch列表中的所有$ watch函数,我们是否完成了$ digest循环?不,我们再次浏览列表并确认没有任何变化。我们这样做是因为当另一个$ watch项更新它时,可能会对其中一个值进行更改。我们继续这个循环,直到任何值都没有变化。
所以我的问题是 - 当另一个$ watch项目更新时,在哪种情况下可能会对其中一个值进行更改?
答案 0 :(得分:2)
这可能不是真实用例中的完美示例,但这样的事情可能会发生。
$scope.$watch('Var_A', function(){
// change Var_B
});
$scope.$watch('Var_B', function(){
// do something
});
将Var_A和Var_B放入$ watch列表中。 假设存在更改Var_A的角度更改,它会触发第一个$ digest周期并且Var_B会更改。第一个$ digest周期不知道Var_B已经改变。然后它会再次浏览列表并发现Var_B会发生变化。在此之后,它再次遍历列表并确保$ watch列表中的任何内容都没有更改。