Я пытаюсь заставить select-box начать с предварительно заполненной опции, используя ng-repeat с AngularJS 1.1.5. Вместо этого выбор всегда начинается без выбора. У него также есть пустой параметр, который я не хочу. Я думаю, что есть побочный эффект ничего не быть выбранным.
Я могу заставить это работать, используя ng-options вместо ng-repeat, но я хочу использовать ng-repeat для этого случая. Хотя мой суженный пример не показывает этого, я также хочу установить атрибут title каждого параметра, и, насколько я знаю, сделать это невозможно с помощью ng-options.
Я не думаю, что это связано с общей проблемой AngularJs / прототипического наследования. По крайней мере, я не вижу ничего очевидного при проверке в Батаранге. Плюс, когда вы выбираете опцию в select с пользовательским интерфейсом, модель обновляется правильно.
Вот HTML-код:
<body ng-app ng-controller="AppCtrl">
<div>
Operator is: {{filterCondition.operator}}
</div>
<select ng-model="filterCondition.operator">
<option
ng-repeat="operator in operators"
value="{{operator.value}}"
>
{{operator.displayName}}
</option>
</select>
</body>
И JavaScript:
function AppCtrl($scope) {
$scope.filterCondition={
operator: 'eq'
}
$scope.operators = [
{value: 'eq', displayName: 'equals'},
{value: 'neq', displayName: 'not equal'}
]
}
JS Fiddle для этого: http://jsfiddle.net/coverbeck/FxM3B/2/
источник
Ответы:
ХОРОШО. Если вы не хотите использовать правильный путь
ng-options
, вы можете добавитьng-selected
атрибут с логикой проверки условий дляoption
директивы, чтобы заставить работать предварительный выбор.Working Demo
источник
Для тега select angular предоставляет директиву ng-options. Это дает вам конкретные рамки для настройки параметров и установки по умолчанию. Вот обновленная скрипка с использованием ng-options, которая работает как положено: http://jsfiddle.net/FxM3B/4/
Обновлен HTML (код остается прежним)
источник
Спасибо TheSharpieOne за указание на опцию ng-selected. Если бы это было опубликовано как ответ, а не как комментарий, я бы сделал это правильным ответом.
Вот рабочий JSFiddle: http://jsfiddle.net/coverbeck/FxM3B/5/ .
Я также обновил скрипку, чтобы использовать атрибут title, который я пропустил в моем исходном посте, поскольку это не было причиной проблемы (но именно поэтому я хочу использовать ng-repeat вместо ng-options) ,
HTML:
JS:
источник
Тот факт, что angular вводит пустой элемент option в select, заключается в том, что объект модели, связанный с ним по умолчанию, при инициализации получает пустое значение.
Если вы хотите выбрать опцию по умолчанию, вы можете установить ее в области видимости контроллера.
Если вы хотите заполнить пустую опцию, это работает для меня
источник
Как и предполагалось, вам нужно использовать ng-options, и, к сожалению, я считаю, что вам нужно ссылаться на элемент массива по умолчанию (если массив не является массивом строк).
http://jsfiddle.net/FxM3B/3/
JavaScript:
HTML:
источник
Если вы используете md-select и ng-repeat ing md-option из углового материала, то вы можете добавить
ng-model-options="{trackBy: '$value.id'}"
к золе тега md-select, показанной на этой ручкеКод:
источник