我有一个构建列表的指令,我动态地用不同的颜色绘制每个项目,例如:

$scope.color = function () {
    var letters = '012345'.split('');
    var color = '#';
    color += letters[Math.round(Math.random() * 5)];
    letters = '0123456789ABCDEF'.split('');
    for (var i = 0; i < 5; i++) {
        color += letters[Math.round(Math.random() * 15)];
    }
    return color;
};

然后我在模板中调用它,如:
<li ng-repeat="item in list">
   <a ng-style="{ background: color() }">{{item.acronym}}</a>
</li>

但是当模板编译时,我得到了这个:
 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
 Watchers fired in the last 5 iterations: [["{ background: color() }; newVal: {\"background\":\"#455116\"}; oldVal: {\"background\":\"#2B1EDC\"}"],["{ background: color()...<omitted>...5D

显然 $digest 处于循环中,但是为什么我的随机颜色会导致这样做,以及如何在将颜色分配给对象并像这样引用它之外解决类似的问题。

最佳答案

这是因为 color 函数在每个摘要循环中都会被调用,并且在每个函数调用中它都会生成不同的颜色......所以它在一秒钟内发生多次变化

关于生成随机值时达到 AngularJS 10 $digest() 迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21612667/

10-11 13:51