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

Angular フィルターを使用できることはわかってorderByいますが、実際には必要な方法で機能しません。私の推測では、リストを希望どおりに手動で並べ替えるカスタム フィルターを作成する必要がありますが、タスクを達成するためのより簡単な方法があるかどうか疑問に思っていました。

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プロパティの値によって配列が並べ替えられ、次にそれらがグループ化されます。データが正しく並べ替えられるため、各グループは正しく並べ替えられて表示されます。

これがフィドルです。

最初の配列がどのように逆順で定義されているかに注目してください。ただし、select の各グループで正しくソートされています。

于 2013-06-13T01:20:37.280 に答える