假设我有以下数据格式:
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>
我希望下拉列表在GroupB之前列出GroupA的所有项目,同时让它们也在每个组下排序。
像这样。
GroupA
AA
BB
CC
GroupB
DD
EE
FF
我知道我可以使用orderBy Angular过滤器,但这并不是我需要的方式。我的猜测是我必须编写一个自定义过滤器,按照我想要的方式手动排序列表,但我想知道是否有更简单的方法来完成任务。
答案 0 :(得分:50)
orderBy
可以采用多个参数的数组来排序。所以你可以这样做:
c as c.label group by c.group for c in data | orderBy:['group','label']
答案 1 :(得分:1)
似乎orderBy
可以完全按照您的意愿运作。
只需要表达并在最后添加orderBy:
c as c.label group by c.group for c in data | orderBy:'label'
这将首先按照每个项目的data
属性的值对label
数组进行排序,然后对它们进行分组。由于数据将被正确排序,因此每个组都会正确显示排序。
注意初始数组是如何按向后顺序定义的,但是在select中的每个组中都正确排序。