我使用这个过滤器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' ">
但它没有任何区别
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过滤器
groupBy应该始终是ng-repeat中的最后一个..所以先设置orderBy,然后设置groupBy,然后你可以使用$ index跟踪,这样正常的ng-repeat就可以了。
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需要一个数组......如果你在分组之前命令它,它应该正确排序