Узел сортировки AngularJS ngOptions
Я пытаюсь использовать ng-options
для отображения массива шрифтов в порядке сортировки в алфавитном порядке по значению элементов массива.
HTML
<select ng-options="font for font in webfonts | orderBy:'font'" name="fonts">
<option value="">Choose a font</option>
</select>
JS
$scope.webfonts = [
'Abel', 'Crafty Girls' , 'Lato' , 'Average',
'Corben', 'Quicksand', ... ];
Я попытался изменить значение в orderBy
и другие вещи. Я прочитал документацию и все комментарии.
Что мне не хватает? Предполагается ли это, что он работает только с объектами?
Ответы
Ответ 1
Это то, что вам нужно сделать:
<select ng-model="selected" ng-options="font for font in webfonts | orderBy:'toString()' " name="fonts">
- Вам нужно добавить ng-model, чтобы правильно сделать привязку для списка строк.
- Вы можете использовать
toString()
для сортировки, если вход содержит список строк. Так как выражение orderBy
может быть функцией Геттера. Результат этой функции будет отсортирован с помощью оператора <, =, > .
Демо
Ответ 2
Как указано в документации, строковый аргумент предназначен для свойств объекта, а не для примитивов. Я считаю, что, как ни странно, вам нужно создать функцию в области, которая просто возвращает аргумент, и передать это на orderBy
.
См. jsFiddle!