我有一个指令来构建一个列表,并在运行时为每个项绘制不同的颜色,例如:
$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 处于循环中,但为什么我的随机颜色会导致发生这种情况,并且如何在将颜色分配给对象并像那样引用它之外解决此类问题。