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

Table Sorting (Using ng-repeat and removing repeat column name using ng-if)

我在 table 中使用 ng-repeat 排序了一些数据。请看第一个fiddle.

http://jsfiddle.net/HB7LU/10201/

<tr ng-repeat="each in list | orderBy:predicate:reverse">

我正在尝试找到一种方法来获得第一列(名称),如果下一行具有相同的名称,则不重复该名称。参见第二个fiddle。

http://jsfiddle.net/HB7LU/10204/

<td ng-show="list[$index].name != list[$index-1].name">{{each.name}}</td>

这最初有效,直到对列进行排序。如果单击 headers,列将排序,但数据不正确。我知道这是因为我对 $index 使用列表。我不确定是否有办法使用其他东西代替?或者老实说,我想知道是否有更好的方法来做到这一点。

如果需要更多信息,请告诉我。谢谢! T

这是因为当您对项目进行排序时 $index 会发生变化,并且重复的项目可能不再是上一个或下一个(由逻辑 list[$index].name != list[$index-1].name 确保)。您可以使用 ng-init 设置 up/alias ng-repeat 的初始索引,因为不会监视 ng-inited 值,它们不会随着排序而改变。

 <tr ng-repeat="each in list | orderBy:predicate:reverse" ng-init="index= $index">

Fiddle

来自文档

The only appropriate use of ngInit is for aliasing special properties of ngRepeat, as seen in the demo below. Besides this case, you should use controllers rather than ngInit to initialize values on a scope.