【发布时间】:2012-09-16 13:46:05
【问题描述】:
我需要根据重复指令的$index 将不同的类应用于<tr>。例如
<table>
<tr ng-repeat="model in list" class="xxx">
<td>...</td>
<tr>
</table>
我需要对<tr> 应用不同的样式,具体取决于索引是偶数还是奇数。
我该如何解决这个问题?
【问题讨论】:
我需要根据重复指令的$index 将不同的类应用于<tr>。例如
<table>
<tr ng-repeat="model in list" class="xxx">
<td>...</td>
<tr>
</table>
我需要对<tr> 应用不同的样式,具体取决于索引是偶数还是奇数。
我该如何解决这个问题?
【问题讨论】:
通常你会像这样使用 ngClassOdd (http://docs.angularjs.org/api/ng.directive:ngClassOdd) 和 ngClassEven (http://docs.angularjs.org/api/ng.directive:ngClassEven) 指令:
<tr ng-repeat="item in items" ng-class-odd="'class1'" ng-class-even="'class2'">
这里是 jsFiddle:http://jsfiddle.net/pkozlowski_opensource/hNHJ4/1/
不幸的是,当删除行时,上述指令无法正常工作:https://github.com/angular/angular.js/issues/1076
作为一种变通方法,您可以将 ngClass 指令 (http://docs.angularjs.org/api/ng.directive:ngClass) 与中继器公开的 $index 变量一起使用:
<tr ng-repeat="item in items" ng-class="{class1 : $index%2==0, class2 : !($index%2==0)}">
这里是 jsFiddle:http://jsfiddle.net/pkozlowski_opensource/am7xs/
它不是超级干净,但可以改进(例如,通过在根范围内公开一个函数,例如:
ng-class="getClass($index,'class1','class2')"
直到提到的错误被修复
【讨论】:
如果这只是为了样式,你可以使用 CSS
tr:nth-child(odd) { ... }
tr:nth-child(even) {...}
请参阅http://jsfiddle.net/5MSDC/ 了解示例
【讨论】: