Angular $ digest循环刷新整个视图而不是部分

时间:2017-11-09 09:46:44

标签: javascript angularjs angularjs-scope

我在Angular 1中遇到一个奇怪的问题,导致脚本进入无限循环,最终导致浏览器挂起。

这是我想要做的事情

<script>
    $scope.A = true;
    $scope.B = [{blah},{blah}];
    $scope.updateB = function(){
        $scope.B.push({blah});
    }
    $scope.D = function(key){
        $scope.A = false;
        return key.name;
    }
</script>

    <div ng-if="A">
        <button ng-click="updateB()"></button>
    </div>

    <div ng-repeat="key in B">
      {{D(key)}}
    </div>

所以基本上我想在按下按钮后隐藏第一个div。我知道我可以在“updateB”功能中执行此操作。但不,我想在评估表达式之后在“D”中这样做。它会进入一个无限循环。

有人能告诉我这里出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

这是因为你的函数D()将在每个角度摘要周期执行。即使B中只有一个元素 如果B上没有元素,则不会执行您的功能。

这可以帮助您了解摘要循环的工作原理: The Digest Loop and $applyUnderstanding the Digest Cycle