Search code examples
javascriptangularjsselectangularjs-filterangularjs-ng-options

How to sort array in ng-options by key?


There is such array:

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"

I do:

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

But I get unsorted select list.


Solution

  • In order to use tracking with filters use track by.

    Markup

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

    Update

    This orderBy will never work because you are having literal array. You need to convert this array to JSON like object which would structured like [{id: 0, value: "M"}, {id: 1, value: "January"},......]

    HTML

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

    Demo Plunkr