我在 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 $apply和 Understanding the Digest Cycle
关于javascript - Angular $digest 循环刷新整个 View 而不是一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198575/