我有一个这样的数组,其中包含动物和水果列表,但顺序是随机的。
$scope.items = [{name:'mango',type:'fruit'},{name:'cat',type:'animal'},{name:'dog',type:'animal'},{name:'monkey',type:'animal'},{name:'orange',type:'fruit'},{name:'banana',type:'fruit'},...]
然后我有一个颜色数组,如下:
$scope.colorSeries = ['#3366cc', '#dc3912', '#ff9900',...];
$scope.setBGColor = function (index) {
return { background: $scope.colorSeries[index] }
}
我正在使用items数组,仅在具有背景颜色的div中呈现水果,该颜色是基于索引从colorSeries中选择的,例如colorSeries[0]将给我 #3366cc。
<div data-ng-repeat="item in items " ng-if="item.type =='fruit'">
<label ng-style="setBGColor($index)">{{item.name}}</label>
</div>
如果items数组的长度小于colorSeries数组的长度,则一切正常。问题出现在当colorSeries数组的长度小于items数组的长度时,例如我有一个由3种颜色组成的color series,那么对于这个items数组,最后一项即橙色需要一个索引为colorSeries[4]的颜色,而我只渲染了三个项,所以该索引是未定义的(undefined)。因此,是否可能获取像0、1、2这样的索引,即使用ng-if渲染元素时的索引。