我在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”中这样做。它会进入一个无限循环。
有人能告诉我这里出了什么问题吗?
答案 0 :(得分:1)
这是因为你的函数D()将在每个角度摘要周期执行。即使B中只有一个元素 如果B上没有元素,则不会执行您的功能。
这可以帮助您了解摘要循环的工作原理: The Digest Loop and $apply和Understanding the Digest Cycle