我正在使用Angular Filter插件根据“Row”参数将tr分组到表中。
下面的代码根据行值
构造Tr<tbody>
<tr ng-repeat="row in data |groupBy: 'Row' | orderBy : 'Row'">
<td ng-repeat="person in row">{{person.Row}}.{{person.Label}}</td>
</tr>
</tbody>
但第10和第11项出现在第2和第3行。 我该如何解决这个问题?
答案 0 :(得分:1)
orderBy
必须是链接中的最后一个过滤器(当您将过滤器应用于另一个过滤器的结果时)。
但是,groupBy
返回一个对象,orderBy
期望数组作为参数
所以,你可以这样做:
<强> JS:强>
$scope.groups = [
{ category: 'alpha', id: 2 },
{ category: 'beta', id: 3 },
{ category: 'gamma', id: 0 },
{ category: 'alpha', id: 4 },
{ category: 'beta', id: 5 },
{ category: 'gamma', id: 1 }
];
// retrieves the min 'id' of a collection, used for the group ordering.
// you can use Agile.js instead. e.g: _.min(arr, 'id')
$scope.min = function(arr) {
return $filter('min')
($filter('map')(arr, 'id'));
}
<强> HTML:强>
<ul ng-repeat="group in groups | groupBy:'category' | toArray:true | orderBy:min">
<!-- print the group name -->
<li>{{ group.$key }}</li>
<!-- iterate over the group members and order each group by id -->
<li ng-repeat="item in group | orderBy:'id'">
{{ item }}
</li>
</ul>
<强>结果:强>
答案 1 :(得分:0)