Выбор выбора по умолчанию ngoptions не работает для

Я прошел несколько (1, 2, другие) публикует в SO информацию о ngOptions и документации. Я получаю выбор, работающий правильно, но есть проблема с выбором значения по умолчанию при первом запуске. Как только я его поменяю, все работает идеально. Как правильно отвечает этот вопрос, angularjs создает пустой параметр, когда значение модели не найдено в предоставленных параметрах, но мое значение 3 существует в пределах предоставленного диапазона.

Ниже приведен объект sList, который я получаю с сервера, но выбор всегда отображает невыбранный с пустым выбором, в то время как в модели существует допустимое значение. Это может быть из-за разницы между «3» и «3», но я не уверен, имеет ли это значение и как.

In JS:

sModel = 3;
sList = {0: "NONE", 1: "LS", 2: "SS", 3: "CR"};


<select ng-model="sModel" ng-options="key as val for (key,val) in sList track by key"></select>

Визуализированное поле выбора:

<select ng-model="sModel" ng-options="key as val for (key,val) in sList track by key" class="ng-pristine ng-valid ng-not-empty ng-touched" aria-invalid="false" style="">
<option value="?" selected="selected"></option>
<option label="NONE" value="0">NONE</option>
<option label="LS" value="1">LS</option>
<option label="SS" value="2">SS</option>
<option label="CR" value="3">CR</option>
</select>

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

Любая помощь, чтобы понять, что именно я делаю неправильно, очень ценится.


person user1242321    schedule 11.03.2016    source источник


Ответы (1)


var myapp = angular.module('app', []);
myapp.controller('Ctrl', function ($scope) {
  var vm = this;
  vm.sModel = "3";
    vm.sList = {0: "NONE", 1: "LS", 2: "SS", 3: "CR"};
   
      
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl as vm">
<select ng-model="vm.sModel" ng-options="key as val for (key,val) in vm.sList"></select>
</div>

попробуй это

sModel = "3";
sList = {0: "NONE", 1: "LS", 2: "SS", 3: "CR"};
person Hadi J    schedule 11.03.2016
comment
Привет @hadiJZ: значение sModel принимается сервером, и я ищу чистый способ без изменения значения. Потому что, когда я отправляю выбранное значение параметра на сервер, он правильно отправляет 3, а не «3», поэтому я не уверен, что это должен быть способ решить эту проблему, даже если это заставит его работать. - person user1242321; 11.03.2016