Angularjs выбирает без выбора

Это кажется очень простой вещью, которую я ищу, и тот факт, что я ничего не могу найти на SO или где-либо еще, заставляет меня думать, что я должен упустить что-то действительно очевидное, но пока я в тупике. Мой вопрос; Есть ли способ при использовании поля выбора, настроенного с помощью ng-options, установить для списка отсутствие выбора (т.е. selectedIndex = -1)? У меня есть поле выбора, настроенное как не раскрывающееся, и я хочу иметь возможность отображать список без выбора.

Я добавляю код, который использую ниже, но я считаю, что это довольно стандартный материал. Массив curSearchResults заполняется с сервера. Я не включаю это здесь, так как оно работает нормально. Я попытался установить для selSearchRslt значение null и вернуться к новому searchRslt() после получения списка, но оба варианта оставляют пустую опцию в верхней части списка. Я привык к тому, что очень просто установить поле выбора без выбора по желанию...

у контроллера:

function searchRslt() {
    this.RsltId = '';
    this.RsltName = '';
}
$scope.curSearchRslts = [];
$scope.selSearchRslt = new searchRslt();

в разметке:

<select class="listPanel" 
   ng-model="selSearchRslt" 
   ng-options="rslt as rslt.RsltName for rslt in curSearchRslts" 
   ng-change="loadSearchRslt()"
   size="40" style="height: 300px; width: 480px">
</select>

Это ответ на комментарии ниже:

Я прочитал вопросы, на которые вы ссылаетесь, и я видел материал в документе о добавлении параметра в разметку, но это не дает того же результата, что и установка выбранного индекса на -1. Вместо этого он добавляет неиспользуемый параметр в мой список. В частности, когда список не отображается в виде раскрывающегося списка, я считаю это решение очень неуклюжим с точки зрения пользовательского интерфейса. Мне не нужна эта дополнительная опция. Мне нужны только те параметры, которые я действительно собираюсь использовать, но ни один из них не выбран. Если ответ: я не могу этого сделать, хорошо, но добавление неиспользуемой опции, безусловно, не то же самое, что установка для selectedIndex значения -1.

Кроме того, я не ищу способ установить параметр по умолчанию, я ищу способ не выбирать никаких параметров. Я не понимаю, как это можно рассматривать как одно и то же. Мне очень легко установить выбор по умолчанию. Я бы никогда не опубликовал вопрос об этом. Я не нашел ничего, что предлагает способ НЕ выбирать. Если я что-то упустил здесь и у меня полностью отключился мозг, примите мои извинения, но я не понимаю, как упомянутый вопрос каким-либо образом отвечает на этот вопрос.


person user3772343    schedule 06.01.2015    source источник
comment
Вы смотрели на этот вопрос. stackoverflow.com/questions/18194255/ и многие другие. Все, что вам нужно сделать, это добавить опцию в выбор   -  person PSL    schedule 07.01.2015
comment
На этот вопрос четко дан ответ в документации Angular docs.angularjs.org/api/ng/directive. /выбрать. См. настройку ‹option value = › ‹/option› в вашем ‹select›. Это упоминается в примере HTML в нижней части документа.   -  person A. J. Alger    schedule 07.01.2015
comment
Похоже, что мой вопрос был отброшен на обочину, поскольку он был помечен как дубликат, и это позор, потому что никто не ответил на мое редактирование, заявив, почему я думаю, что это неправильно. Я пришел к выводу, что вы не можете установить список выбора, связанный с ng-options, без выбора, и я думаю, что это промах в Angularjs (который мне в остальном нравится). Что касается меня, говоря, что добавление пустого (или -- Пожалуйста, выберите --) варианта является решением, это отвлекающий маневр, который на самом деле не решает проблему. Возможно, нужна директива ng-noSelection или что-то в этом роде.   -  person user3772343    schedule 07.01.2015


Ответы (1)


Вы можете сделать это, чтобы создать пустую опцию:

<select class="listPanel" 
   ng-model="selSearchRslt" 
   ng-options="rslt as rslt.RsltName for rslt in curSearchRslts" 
   ng-change="loadSearchRslt()"
   size="40" style="height: 300px; width: 480px">
  <option value="">-- Please Select --<option>
</select>
person Guilhem Soulas    schedule 06.01.2015