web-dev-qa-db-ja.com

ng-optionsの配列をキーで並べ替える方法は?

そのような配列があります:

month: Array[13]0: "M"1: "January"2: "February"3: "March"4: "April"5: "May"6: "June"7: "July"8: "August"9: "September"10: "October"11: "November"12: "December"

私がやります:

ng-options="key as value for (key, value) in data.month | orderBy:key"

しかし、ソートされていない選択リストが表示されます。

9
Faud

フィルタでトラッキングを使用するには、track byを使用します。

マークアップ

ng-options="key as value for (key, value) in data.month | orderBy:'key' track by key"

更新

このorderByは、リテラル配列を使用しているため、機能しません。この配列を[{id: 0, value: "M"}, {id: 1, value: "January"},......]のように構造化されたオブジェクトのようなJSONに変換する必要があります

[〜#〜] html [〜#〜]

ng-options="item.id as item.value for items in data.month | orderBy:'id'"

デモプランカー

12
Pankaj Parkar

不足している2つの'。この部分、orderBy: keyorderBy:'key'である必要があります

これを試して:

ng-options="key as value for (key, value) in data.month | orderBy: 'key'"
2
solid_luffy

この問題を解決するには、再フォーマットする必要がありますng-optionのように:

day.id as day.value for day in data.month

そして配列data.monthはユーザーに言われたようになりますpankajparkar

1
Faud