У меня есть раскрывающееся меню следующим образом:
<select ng-model="myDropDown"
ng-options="c.id as c.name for c in myUnsortedList | orderBy:'name'"></select>
Он заполняется несортированным списком (с объектами-членами, имеющими свойства id
и name
), отсортированным по свойству name
.
Досадная проблема заключается в том, что AngularJS помещает пустую опцию вверху (изображено слева).
Как описано здесь, решение состоит в том, чтобы инициализировать список в коде контроллера:
$scope.myDropDown = myUnsortedList[0].id;
^
|
+----- Index 0 selected just to take
an index that always is available
Это удаляет пустой элемент, но имеет побочный эффект, делая произвольный элемент предварительно выбранным элементом в раскрывающемся меню (правое изображение), поскольку myUnsortedList
не отсортирован и не в том же порядке, что и отсортированный список, установленный в ng-options
; следовательно, любой элемент может иметь индекс 0 в несортированном списке.
Я бы хотел, чтобы AngularJS не выбирал заранее произвольный элемент в отсортированном меню (т. е. вместо этого выбирал первый элемент), избегая при этом пустого элемента. Как это можно легко сделать?