Angular ng-repeat groupBy和Keep order

时间:2014-09-18 20:04:59

标签: javascript html5 angularjs angularjs-directive ionic-framework

我正在使用此过滤器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' ">

但它没有任何区别

3 个答案:

答案 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需要一个数组......如果你在分组之前命令它,它应该正确排序

intrinsics finder