我在表格中使用ng-repeat进行了一些数据排序。请看第一个小提琴。
http://jsfiddle.net/HB7LU/10201/
<tr ng-repeat="each in list | orderBy:predicate:reverse">
我正在尝试找到第一列(Name)的方法,如果下一行具有相同的名称,则不重复该名称。看到第二个小提琴。
http://jsfiddle.net/HB7LU/10204/
<td ng-show="list[$index].name != list[$index-1].name">{{each.name}}</td>
这最初适用于列的排序。如果单击标题,列将排序,但数据不正确。我知道这是因为我使用$ index的列表。我不确定是否有办法使用别的东西?或者我想知道是否有更好的方法来做到这一点,说实话。
如果需要更多信息,请与我们联系。谢谢! Ť
答案 0 :(得分:1)
这是因为当您对项目进行排序时$index
会发生更改,而重复的项目可能不再是上一个或下一个项目(由逻辑list[$index].name != list[$index-1].name
确保)。您可以使用ng-init
来设置/别名ng-repeat的初始索引,因为不会监视ng-inited值,它们不会随排序而改变。
<tr ng-repeat="each in list | orderBy:predicate:reverse" ng-init="index= $index">
<强> Fiddle 强>
来自文档
ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。