Выберите и проблема NgModel с моделью

У меня проблема с тегом select и ngmodel. Значение переменной в модели не представлено в параметрах раскрывающегося списка.

Вот код:

<select ng-model="number">
  <option values="5">5</option>
  <option values="10">10</option>
  <option values="20">20</option>
  <option values="25">25</option>
</select>

Где number определяется в контроллере как 20.

После компиляции добавляется следующий HTML:

<option value="? undefined:undefined ?"></option>

ПРИМЕЧАНИЕ:

Я также представил number в представлении HTML, и у него нет проблем с отображением числа в выражении {{number}} — тогда оно отображается правильно.

Вот плнкр:

http://plnkr.co/edit/IXfwByE5ZrA4y7z0y6mh?p=preview


person uksz    schedule 25.02.2016    source источник
comment
Чего вы пытаетесь достичь? Вам нужна дополнительная опция, которая отображает значение number?   -  person LJ.Wizard    schedule 25.02.2016
comment
у вас есть `$scope.number = '20';` в контроллере? плункер   -  person sch    schedule 25.02.2016
comment
@LJ.Wizard точно, я хочу, чтобы выбранный параметр (тот, который выбран по умолчанию) был значением $scope.number   -  person uksz    schedule 25.02.2016
comment
Пока вы видите значение {{number}} в представлении, проблем с ngModel не возникает. Пожалуйста, предоставьте URL-адрес plunker, воспроизведя вашу проблему.   -  person Siva    schedule 25.02.2016
comment
@klski, в моем контроллере это число или строка.   -  person uksz    schedule 25.02.2016
comment
пожалуйста, кстати (plnkr) .. :)   -  person sch    schedule 25.02.2016


Ответы (4)


Вы можете попробовать этот способ

<select name="mydata" ng-model="number" 
    ng-options="value for value in [5,10,20,25]">
</select>

в контроллере

$scope.number = 20;
person Sherlocked Nguyen    schedule 25.02.2016
comment
Это работает так. Знаете, почему это не работает, если я не использую ng-options? - person uksz; 25.02.2016
comment
Я думаю, потому что значение параметра может принимать только строку значения, поэтому, если вы поместите $scope.number = '20'; тогда у вас html будет работать. в противном случае вам нужно использовать ng-options - person Sherlocked Nguyen; 25.02.2016

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

документация здесь

Обычно angular выбирает параметр, если значение модели совпадает со значением одного из параметров.

10 имеет значение 10 и строку типа данных, где ваш $scope.number = 10 делает его значение 10 числового типа.

Таким образом, значение модели не соответствует.

Попробуйте $scope.number = '10' в вашем контроллере, и это сработает.

person Naga Sandeep    schedule 25.02.2016

У вас есть $scope.number=5. Вы должны иметь

$scope.number = '5'   // a string. Change 5 to '5'
person Nijeesh    schedule 25.02.2016

$scope.number = 5+""; 

Добавьте этот оператор в свой контроллер вместо $scope.number=5, потому что значением параметра является строка.

person Hassan Tariq    schedule 25.02.2016