Angularjs 使用ng show expr切换表导致摘要迭代次数限制违反

Angularjs 使用ng show expr切换表导致摘要迭代次数限制违反,angularjs,Angularjs,我的代码的JSFIDLE是 有一个notes表格,带有一个切换按钮,可在末尾显示或隐藏表格。每个注释的背景色是从恒定的颜色列表中随机选择的 当我单击切换按钮时,表将被重新渲染为新颜色,而不是隐藏。ng show是否在每次单击时都创建一个新的范围?而且,我得到了这个错误 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterati

我的代码的JSFIDLE是

有一个
notes
表格,带有一个切换按钮,可在末尾显示或隐藏表格。每个
注释的背景色是从恒定的颜色列表中随机选择的

当我单击切换按钮时,表将被重新渲染为新颜色,而不是隐藏。ng show是否在每次单击时都创建一个新的
范围
?而且,我得到了这个错误

Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations:
..................................................................

你的代码会中断,因为每次你在控制器中生成一个随机颜色,然后你就在喃喃地说模型,这会触发一个新的摘要循环,这反过来会生成一个新的随机颜色等等。。。走向无限

由于AngularJS执行更改跟踪的方式,如果您在模型上生成随机值,您的模型将永远不会稳定,因此您可能必须尝试其他方法来解决问题

此外,我还有一个与您的代码相关的建议:

用分号来完成javascript语句,否则你会自食其果

看看这个:

编辑


昨天晚上,我想起了你的问题,我对它作了一个扭曲:

基本上我改变了事情发生的时刻。希望能有帮助

$scope.toggleShow = function() {
    $scope.bgColors.length = 0;
    for (var idx = 0; idx < $scope.notes.length; idx++) $scope.bgColors.push(getRandColor());
    $scope.showAll = !$scope.showAll;
};
$scope.toggleShow=function(){
$scope.bgColors.length=0;
对于(var idx=0;idx<$scope.notes.length;idx++)$scope.bgColors.push(getRandColor());
$scope.showAll=!$scope.showAll;
};

昨天晚上,我想起了你的问题,我对它作了一个调整。请检查更新的答案。。。