Angular2 - 消化循环如何在angular2 / 4中工作

时间:2017-09-02 11:43:01

标签: angularjs angular ionic2

如何在Angular2中实现diagest循环机制,例如:$ scope是单个对象,它继续观察其子元素并触发更改如何angular2用$ scope

完成此操作

3 个答案:

答案 0 :(得分:2)

在Angular中, change detection 的概念是自动的。没有$ scope,因此在 $scope.$watch() $scope.$digest() 不再是。

您可以在 Change Detection 上阅读更多内容。

答案 1 :(得分:1)

在AngularJS中,大多数组件/指令都与$scope相关联。每个$scope都附有一组监视功能。这些监视功能执行某些任务,但最重要的任务可能是通过插值{{...}}语法或ng-bind指令添加的DOM更新。因此,假设您有3个组件/指令形成$scopes的层次结构:

AComponentScope
    BComponentScope
       CComponentScope

因此,当AngularJS运行$digest时,它首先触发观察者更新AComponentScope的DOM,然后更新BComponentScope,然后更新CComponentScope

在Angular中,还有一项任务是更新DOM,作为更改检测/摘要的一部分。此任务由基于模板为每个组件生成的updateRenderer函数执行。因此,当Angular运行更改检测时,它会像在AngularJS中一样递归地触发每个组件的函数。唯一的区别是这个过程只从上到下发生一次,而在AngularJS中,这个过程最多可能发生10次。

有关更多信息,请阅读以下文章:

答案 2 :(得分:0)

如果您还对Angular默认更改检测机制有疑问,请尝试此操作。就我而言,在我的ionic4项目中,Angular的默认更改机制无法正常运行,因此我手动触发了它。

constructor(private ref: ChangeDetectorRef) {
     ref.detach();
     setInterval(() => {
         this.ref.detectChanges();
     }, 500);
 }