Я заполняю раскрывающийся список с помощью ng-options, который подключен к контроллеру, который в свою очередь вызывает сервис. К сожалению, поступающие данные - беспорядок, и мне нужно иметь возможность сортировать их по алфавиту.
Вы полагаете, что что-то подобное $.sortBy
сделает это, но, к сожалению, это не сработало. Я знаю, что могу отсортировать его с помощью javascript с помощью вспомогательного метода function asc(a,b)
или чего-то подобного, но я отказываюсь верить, что нет более чистого способа сделать это, плюс я не хочу раздувать контроллер вспомогательными методами. Это что-то настолько принципиальное в принципе, поэтому я не понимаю, почему AngularJS не имеет этого.
Есть ли способ сделать что-то вроде $orderBy('asc')
?
Пример:
<select ng-option="items in item.$orderBy('asc')"></select>
Было бы чрезвычайно полезно иметь опции, orderBy
чтобы вы могли делать все, что захотите, всякий раз, когда вы обычно пытаетесь отсортировать данные.
selected
. Для этого примера вы можете сделать что-то вроде$scope.selected = $scope.friends[0]
. Смотрите эту скрипку для рабочего образца.f.age as f.name for f in friends | orderBy:'name'
- вот рабочая скрипка. Больше о нг-опциях здесь .<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></selected>
, Вводtrack by
после фильтра фильтра не был интуитивно понятным, и этот ответ является лучшим результатом поиска от Google.Вы должны быть в состоянии использовать фильтр:
orderBy
orderBy
может принять третий вариант дляreverse
флага.Здесь элемент отсортирован по свойству name в обратном порядке. Вторым аргументом может быть любая функция порядка, поэтому вы можете сортировать по любому правилу.
@ смотри http://docs.angularjs.org/api/ng.filter:orderBy
источник
http://jsfiddle.net/Nfv42/65/
источник
Для тех, кто хочет отсортировать переменную в третьем слое:
ты можешь сделать это так
источник