表格排序(使用ng-repeat并使用ng-if删除重复列名称)

时间:2015-01-18 23:31:43

标签: javascript arrays angularjs angularjs-ng-repeat angular-ng-if

我在表格中使用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的列表。我不确定是否有办法使用别的东西?或者我想知道是否有更好的方法来做到这一点,说实话。

如果需要更多信息,请与我们联系。谢谢! Ť

1 个答案:

答案 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来初始化作用域上的值。