javascript - Angular $digest 循环刷新整个 View 而不是一部分

标签 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”中执行此操作。它进入无限循环。

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

最佳答案

发生这种情况是因为您的函数 D() 将在每个 Angular 摘要周期执行。即使 B 中只有一个元素。 如果 B 上没有元素,则您的函数将不会执行。

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

关于javascript - Angular $digest 循环刷新整个 View 而不是一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198575/

相关文章:

javascript - AngularJS:如何将服务方法分配给 View 中的 Controller $scope 和 ng-repeat (it)?

angularjs - AngularJS中如何向上滑动和向下滑动?

javascript - ng-select 没有在 Angular 2 中更新

javascript - 类上的scrollTop =scrollHeight而不是id

javascript - 从 html 更改 AngularJS url/route - javascript 代码

angularjs - 如何在UI选择值中选择值?

javascript - Angular block svg xmlns 作为 $sce :insecurl

javascript - 如何在Angular4中使用用户页面注册时更改主页的内容

加载时的 angularjs 值不正确

javascript - 在 ng-model 之后填充 ng-options