Angular ng-repeat groupBy and Keep order

Angular ng-repeat groupBy and Keep order

本文关键字:Keep order and groupBy ng-repeat Angular      更新时间:2023-09-26

Im正在使用此筛选器https://github.com/a8m/angular-filter#groupby这样订购我的数据,效果很好:

<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' ">

现在我试着按类别或顺序来保持这些组的顺序。

这可能吗?

我试着这样做:

<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' | orderBy:'category.order' ">

但它没有任何区别

orderBy筛选器不适用于ngRepeat中的对象。所以,你能做的是这样的事情:

<!-- 
     Note: toArray filter also attaches a new property $key
     to the value containing the original key that was used in the object. 
-->
<div ng-repeat="tags in tagsList | groupBy:'prop' | toArray:true | orderBy:'$key'">
  Group name: {{ tags.$key }}
  <p ng-repeat="tag in tags | orderBy:'prop'">
     {{ tag.name }}
  </p>
</div>

请参阅:toArray filter

groupBy应始终是ng repeat中的最后一个。。所以先设置orderBy,最后设置groupBy,然后可以使用track-by-$index所以正常的ng重复将是

ng-repeat="item in items orderBy:'price' | groupBy:'name' track by $index"

希望它能帮助它,即使它有点晚!

对于djsiz的部分答案(不需要跟踪,它缺少一个管道),您可以这样做:

<div ng-repeat="(key, value) in tags.tags.objects | orderBy:'category.order' | groupBy:'category.name'">

groupBy创建了一个对象,但orderBy需要一个数组。。。如果你在分组之前按顺序订购,它应该正确排序

https://jsfiddle.net/r0m4n/kfho6r26/