Я искал в Google и ничего не могу найти по этому вопросу.
У меня есть этот код.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
></select>
С некоторыми данными, как это
options = [{
name: 'Something Cool',
value: 'something-cool-value'
}, {
name: 'Something Else',
value: 'something-else-value'
}];
И на выходе что-то вроде этого.
<select ng-model="somethingHere"
ng-options="option.value as option.name for option in options"
class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Something Cool</option>
<option value="1">Something Else</option>
</select>
Как можно установить первый параметр в данных в качестве значения по умолчанию, чтобы получить такой результат.
<select ng-model="somethingHere" ....>
<option value="0" selected="selected">Something Cool</option>
<option value="1">Something Else</option>
</select>
javascript
angularjs
html-select
iConnor
источник
источник
a **single** hard-coded <option> element ... can be nested into the <select> element.
параметры не могут быть частью разметки.Ответы:
Вы можете просто использовать ng-init, как это
источник
Если вы хотите убедиться, что ваше
$scope.somethingHere
значение не будет перезаписано при инициализации вашего представления, вы захотите coalesce (somethingHere = somethingHere || options[0].value
) значение в вашем ng-init следующим образом:источник
options
тем, чтобы быть пустым? Как в случае, еслиoptions
данные поступают из внешнего источника.ng-init="somethingHere= somethingHere || 'Select one' "
Я пытался так. но это не сработало. что не так в моем кодеПопробуй это:
HTML
Javascript
Плункер здесь .
Если вы действительно хотите установить значение, которое будет привязано к модели, измените
ng-options
атрибут наи Javascript для
Еще один плункер здесь, учитывая вышеизложенное.
источник
Только один ответ на Srivathsa Хариш Venkataramana упомянуто ,
track by
который действительно является решением для этого!Вот пример вместе с Plunker (ссылка ниже) о том, как использовать
track by
в selectng-options
:Если
selectedCity
он определен для угловой области, и у него естьid
свойство с тем же значением, что иid
у любогоcity
вcities
списке, он будет автоматически выбран при загрузке.См. Исходную документацию для получения дополнительной информации: https://code.angularjs.org/1.3.15/docs/api/ng/directive/select
источник
Я думаю, что после включения «track by» вы можете использовать его в ng-options, чтобы получить то, что вы хотели, например, следующее
Этот способ лучше, потому что когда вы хотите заменить список строк списком объектов, вы просто измените его на
где что-то - это, конечно, объект со свойствами name и id. Обратите внимание, что «as» не используется в этом способе выражения параметров ng, потому что он будет устанавливать только значение, и вы не сможете изменить его, когда используете track by
источник
Используется принятый ответ
ng-init
, но в документе говорится, что по возможности следует избегать ng-init.Вы также можете использовать
ng-repeat
вместоng-options
своих вариантов. Сng-repeat
, вы можете использоватьng-selected
соng-repeat
специальными свойствами. т. е. $ index, $ odd, $ даже, чтобы это работало без какого-либо кодирования.$first
является одним из специальных свойств ng-repeat.---------------------- РЕДАКТИРОВАТЬ ----------------
Хотя это работает, я бы предпочел @ mik-t's Ответьте, когда вы знаете, какое значение выбрать, https://stackoverflow.com/a/29564802/454252 , который использует
track-by
иng-options
без использованияng-init
илиng-repeat
.Этот ответ следует использовать только тогда, когда вы должны выбрать первый элемент, не зная, какое значение выбрать. Например, я использую это для автозаполнения, которое требует выбора пункта FIRST все время.
источник
ng-options
быстрее и более оптимизировано, чемng-repeat
.<select>
назначении модели черезselect as
часть выражения понимания», «сокращение потребления памяти за счет отсутствия новой области видимости для каждый повторяющийся экземпляр »,« повышенная скорость рендеринга за счет создания опцийdocumentFragment
вместо отдельных »Мое решение этого было использовать HTML, чтобы жестко закодировать мой вариант по умолчанию. Вот так:
В ХАМЛ:
В HTML:
Я хочу, чтобы моя опция по умолчанию возвращала все значения из моего API, поэтому у меня есть пустое значение. Также извините мой хамл. Я знаю, что это не прямой ответ на вопрос ОП, но люди находят это в Google. Надеюсь, это поможет кому-то еще.
источник
Используйте приведенный ниже код, чтобы заполнить выбранный вариант из вашей модели.
источник
В зависимости от того, сколько вариантов у вас есть, вы можете поместить свои значения в массив и автоматически заполнить эти параметры, как это
источник
В моем случае мне нужно было вставить начальное значение только для того, чтобы указать пользователю выбрать опцию, поэтому мне нравится код ниже:
Когда я попробовал параметр со значением! = Пустой строки (null), параметр был заменен на угловой, но, если поставить параметр, подобный этому (со значением NULL), выберите apear с этим параметром.
Извините за мой плохой английский, и я надеюсь, что помогу с этим.
источник
Использование
select
сngOptions
и установка значения по умолчанию:См. Документацию ngOptions для большего количества
ngOptions
примеров использования.plnkr.co
Официальная документация об
SELECT
элементеHTMLс угловой привязкой данных.Привязка
select
к нестроковому значению посредствомngModel
разбора / форматирования:plnkr.co
Другой пример:
jsfiddle
источник
Это сработало для меня.
источник
В моем случае, так как по умолчанию меняется от случая к случаю в форме. Я добавляю пользовательский атрибут в тег выбора.
в директивах я создал скрипт, который проверяет значение, и когда angular заполняет его, устанавливает параметр с этим значением в выбранный.
})
только что перевел это из coffescript на лету, по крайней мере, суть его правильна, если не дырка.
Это не самый простой способ, но сделать это, когда значение меняется
источник
В ответ на ответ Бена Леша должна быть эта строка
вместо того
То есть,
источник
Просто используйте
ng-selected="true"
следующее:источник
Я бы установил модель в контроллере. Тогда выбор будет по умолчанию для этого значения. Пример: html:
Угловой контроллер (используя ресурс):
источник
Это работает для меня
источник
ng-init
потому что вы устанавливаете ngModel.Если вы используете
ng-options
для рендеринга выпадающий, то поoption
умолчанию выбрано то же значение, что и для ng-modal. Рассмотрим пример:Таким образом, опция, имеющая то же значение
list.key
иselectedItem
, выбрана по умолчанию.источник
Мне нужно было по умолчанию «Пожалуйста, выберите», чтобы быть недоступным для выбора. Мне также нужно было иметь возможность условно установить выбранную по умолчанию опцию.
Я добился этого следующим упрощенным способом: код JS: // перевернуть эти 2, чтобы проверить выбранное значение по умолчанию или нет по умолчанию с текстом «Please Select» по умолчанию //$scope.defaultOption = 0; $ scope.defaultOption = {ключ: '3', значение: 'Вариант 3'};
HTML:
Я надеюсь, что это помогает кому-то еще, у которого есть подобные требования.
«Пожалуйста, выберите» было выполнено через ответ Джоффри Ауттиера здесь .
источник
Если у вас есть какая-то вещь вместо инициализации части даты, вы можете использовать
ng-init()
ее, объявив ее в своем контроллере, и использовать ее в верхней части HTML. Эта функция будет работать как конструктор для вашего контроллера, и вы можете инициировать свои переменные там.источник
источник
попробуйте это в вашем угловом контроллере ...
$thingHere = {name: 'Something Cool'};
Вы можете установить значение, но вы используете сложный тип, и угловой будет искать ключ / значение для установки в вашем представлении.
И, если не работает, попробуйте это: ng-options = "option.value как option.name для опции в опциях, отслеживаемых по option.name"
источник
Я думаю, что самый простой способ
источник