以ng-repeat为每个元素设置不同的样式

时间:2016-09-26 08:25:20

标签: javascript angularjs ng-repeat angular-digest

我有ng-repeat并在ng-repeat内  每个替代div都有不同的border-color。所以我用过

< div ng-repeat="channel in channelList">
    <div ng-style="getBgColor()">
</div

getBgColor()定义为:

         $scope.currentColorIndex = (($scope.currentColorIndex+1) % $scope.radioColors.length);
         $scope.tileColor = $scope.radioColors[$scope.currentColorIndex].hex;
         return $scope.tileColor

我一直收到错误

$rootScope:infdig] 10 $digest() iterations reached

我知道为什么我会收到错误,因为在每次ng-repeat次迭代中我都返回一个不同的对象。这有什么作用?

2 个答案:

答案 0 :(得分:3)

在这里你甚至不需要调用函数,因为 ng-repeat使用$index 记录其索引,你可以在内部元素中使用它。

<div ng-repeat="channel in channelList">
    <div ng-style="{color: radioColors[$index].hex}">
</div

它会将color属性分配给radioColors[$index].hex表达式返回的十六进制,其中radioColors是范围对象。

Just go through this documentation

答案 1 :(得分:2)

使用ngRepeat可以使用$ index。

<div ng-repeat="channel in channelList">
    <div ng-style="getBgColor($index)">
</div>