Как отсортировать массив в ng-опциях по ключу?

113
11

Существует такой массив:


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"

Но я получаю список несортированных select.

спросил(а) 2015-06-03T16:08:00+03:00 5 лет, 3 месяца назад
1
Решение
131

Чтобы использовать отслеживание с фильтрами, используйте track by.


Разметка


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

Обновление

Этот orderBy никогда не будет работать, потому что у вас есть литеральный массив. Вам нужно преобразовать этот массив в объект JSON, который был бы структурирован как [{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

ответил(а) 2015-06-03T16:10:00+03:00 5 лет, 3 месяца назад
70

Отсутствует два '. Эта часть orderBy: key должна быть orderBy:'key'


Попробуйте следующее:

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

ответил(а) 2015-06-03T16:12:00+03:00 5 лет, 3 месяца назад
58

Для решения этой проблемы необходимо переформатировать ng-option как:


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

И массив data.month будет таким, как указано пользователем pankajparkar

ответил(а) 2015-06-03T18:05:00+03:00 5 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема