我正在使用此过滤器https://github.com/a8m/angular-filter#groupby来排序我的数据,并且效果很好:
<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' ">
现在我试图通过category.order。
保持这些组的顺序这可能吗?
我试过像这样管道:
<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' | orderBy:'category.order' ">
但它没有任何区别
答案 0 :(得分:18)
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过滤器
答案 1 :(得分:3)
groupBy应始终是ng-repeat中的最后一个.. 所以首先设置orderBy,然后设置groupBy,然后你可以使用$ index跟踪 所以正常的ng-repeat将是。
ng-repeat="item in items orderBy:'price' | groupBy:'name' track by $index"
... 希望它有点晚,甚至有帮助!
答案 2 :(得分:2)
部分是djsiz的回答(跟踪并非缺少管道),你可以这样做:
<div ng-repeat="(key, value) in tags.tags.objects | orderBy:'category.order' | groupBy:'category.name'">
groupBy创建一个对象,但orderBy需要一个数组......如果你在分组之前命令它,它应该正确排序