Как установить значение по умолчанию для поля select в angularjs

У меня есть форма, которая используется для редактирования объекта, и я не могу выбрать значение в поле выбора.

У меня есть json-массив, который представляет редактируемый и выглядит следующим образом:

       $scope.item = [{
    "objectID": "76",
    "versionID": "0",
    "versionName": "CURRENT",
    "objectName": "xyz",
}]

теперь я в то же время заполняю поле выбора из другого массива json, которое выглядит так:

$scope.versions = [{
    "id": "0",
    "description": "CURRENT",
    "name": "CURRENT"
},
    {
    "id": "114",
    "description": "description of Version 2",
    "name": "version2"
},
    {
    "id": "126",
    "description": "description of Version 3",
    "name": "version3"
},
    {
    "id": "149",
    "description": "description of Version 4",
    "name": "version4"
}] 

внутри моей веб-страницы Я создаю окно выбора следующим образом:

Version:<select ng-model="item.versionID" ng-selected="item.versionID" ng-options="version.name for version in versions" required>

поле выбора заполняется для меня, но оно должно выбирать значение, соответствующее версии в item. Я пробовал как versionID, так и versionName, я даже попытался установить ng-selected="0", и это даже не работает.

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

Добавлен JSFiddle

Добавлен JsFiddle здесь

Ответ 1

Вы можете просто использовать ng-init, как это

<select ng-init="somethingHere = options[0]" ng-model="somethingHere" ng-options="option.name for option in options"></select>

Ответ 2

Он не устанавливает значение по умолчанию, потому что ваша модель не привязана к свойствам id или имени, она привязана к каждому объекту version. Попробуйте установить versionID на один из объектов, и он должен работать, т.е. $scope.item.versionID = $scope.versions[2];

Если вы хотите установить свойство id, вам нужно добавить синтаксис select as:

ng-options="version.id as version.name for version in versions"

http://jsfiddle.net/LrhAQ/1/

Ответ 3

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

track by version.id

для ваших ng-опций.

Ответ 4

После поиска и попыток нескольких нерабочих параметров, чтобы моя опция выбора по умолчанию работала. Я нахожу чистое решение при: http://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/

<select class="ajg-stereo-fader-input-name ajg-select-left"  ng-options="option.name for option in selectOptions" ng-model="inputLeft"></select>
<select class="ajg-stereo-fader-input-name ajg-select-right" ng-options="option.name for option in selectOptions" ng-model="inputRight"></select>

 scope.inputLeft =  scope.selectOptions[0];
 scope.inputRight = scope.selectOptions[1];

Ответ 5

если вы даже не хотите инициализировать ng-model до статического значения, и каждое значение управляется DB, это можно сделать следующим образом. Angular сравнивает оцениваемое значение и заполняет раскрывающийся список.

Здесь ниже modelData.unitId извлекается из БД и сравнивается со списком идентификатора блока, который является отдельным списком из db -

 <select id="uomList" ng-init="modelData.unitId"
                         ng-model="modelData.unitId" ng-options="unitOfMeasurement.id as unitOfMeasurement.unitName for unitOfMeasurement in unitOfMeasurements">

Ответ 6

В соответствии с документами select для меня работал следующий фрагмент кода.

<div ng-controller="ExampleController">
<form name="myForm">
<label for="mySelect">Make a choice:</label>
<select name="mySelect" id="mySelect"
  ng-options="option.name for option in data.availableOptions track by     option.id"
  ng-model="data.selectedOption"></select>
</form>
<hr>
<tt>option = {{data.selectedOption}}</tt><br/>
</div>

Ответ 7

  <select ng-model="selectedCar" ><option ng-repeat="car in cars "  value="{{car.model}}">{{car.model}}</option></select>
<script>var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) { $scope.cars = [{model : "Ford Mustang", color : "red"}, {model : "Fiat 500", color : "white"},{model : "Volvo XC90", color : "black"}];
$scope.selectedCar=$scope.cars[0].model ;});