32

假设我有以下这种形式的数据数组:

var data = [{group:GroupA, label: BB}, {group:GroupB, label: DD}.....].

我的绑定将是这样的:

<select data-ng-options="c as c.label group by c.group for c in data"></select>

我希望下拉列表列出GroupA之前的所有项目,GroupB同时将它们也排序在每个组下。

像这样的东西:

GroupA
AA
BB
CC

GroupB
DD
EE
FF

我知道我可以使用orderByAngular 过滤器,但这并不能真正按照我需要的方式工作。我的猜测是我必须编写一个自定义过滤器,以我想要的方式手动排序列表,但我想知道是否有更简单的方法来完成任务。

4

2 回答 2

52

orderBy可以采用多个参数的数组进行排序。所以你可以这样做:

c as c.label group by c.group for c in data | orderBy:['group','label']

这是一个小提琴

于 2013-06-13T07:22:04.850 回答
1

看起来orderBy就像你想要的那样工作。

只需接受您的表达并在最后添加 orderBy :

c as c.label group by c.group for c in data | orderBy:'label'

这将首先按data每个项目的label属性值对数组进行排序,然后对它们进行分组。因为数据已经正确排序,所以每个组都将正确排序。

这是一个小提琴。

请注意初始数组是如何按倒序定义的,但在选择中的每个组中都正确排序。

于 2013-06-13T01:20:37.280 回答