2015-10-07 2 views
2

Моя ng-модель обновляется с первым значением при вводе в раскрывающемся списке, когда некоторые значения SHARE начинают буквы в титрах.ng-model получает неправильное значение из раскрывающегося списка

<div ng-app="dropDown" ng-controller="dropDownController"> 
     <select name="StateId" ng-model="selectedState" class="form-control" ng-change="selectedStateChanged()" ng-options="(states.Abbrev + ' - ' + states.Name) for states in states"></select> 
     <span>{{selectedState.Name||''}}</span> 
    </div> 

Plnkr http://plnkr.co/edit/pLVzK18iJxrmrL9Oiw4b?p=preview

Сценарий для теста:

  1. Нажмите на любой части формы.
  2. Нажмите вкладку, чтобы сфокусировать выпадающее окно.
  3. Start набрав 'TX'

Результат: - 'TX - Техас параметр отображается на drowpdown. - значение $ scope.selectedState {имя: 'TENNESSEE'}

Ожидаемое:

  • 'TX - Техас параметр отображается на drowpdown.
  • значение
  • $ scope.selectedState должно быть {Name: «TEXAS»}

Я буду работать это с помощью простой JavaScript, в то же время, я хотел бы знать, если Theres любой AngularJS решение из там.

Заранее спасибо.

ответ

4

У меня также возникли проблемы с select. Поэтому всегда безопаснее добавлять пустой файл option -tag!

<div ng-app="dropDown" ng-controller="dropDownController"> 
    <select name="StateId" ng-model="selectedState" class="form-control" ng-change="selectedStateChanged()" ng-options="(states.Abbrev + ' - ' + states.Name) for states in states"> 
    <option></option> 
    </select> 
    <span>{{selectedState.Name||''}}</span> 
</div> 

Решение: http://plnkr.co/edit/LfS347JM6V7Rv5S6vPkL?p=preview


Angular Documentation объясняет проблему:

Если viewValue из ngModel не соответствует ни одному из вариантов, то управление будет автоматически добавлять " неизвестный ", который затем удаляется при разрешении несоответствия.

Возможно, в элемент может быть вложен один жесткий код со значением, установленным в пустую строку. Затем этот элемент будет представлять нулевую или «не выбранную» опцию.

+0

Вы спасли меня много времени. Спасибо. которые фиксировали все странные проблемы. – celerno

+0

Есть ли какое-либо преимущество в использовании этого метода над обычным тегом select и использованием 'ng-repeat' в теге' option'? Раньше я делал это так, и казалось, что все работает нормально. Я только в Angular в течение примерно двух месяцев, поэтому меняются разные способы делать что-то. – ragerory

+0

hmm Я думаю, что это в основном то же самое, но я всегда использую 'ng-options' –

Смежные вопросы