Узел сортировки 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!