Все перечислены в порядке, и у меня есть значение по умолчанию, установленное в модели, но кажется, что он просто не хочет использовать это как параметр по умолчанию в элементе select. Как добиться того, чтобы модель выбрала значение iso соответствующего языка? Кроме того, как мне сохранить пустую опцию, добавляемую к элементу?Как установить выбранную опцию с помощью angularjs ng-options и ng-model с использованием строгой?
Пример данных:
// list of languages
[
{"iso":"abk","language":"Abkhazian"},
{"iso":"aar","language":"Afar"},
{"iso":"afr","language":"Afrikaans"},
...
]
// location object containing the property for the language value
{
"id":"516",
"site":"Al Seela",
"start_utc":"03:00:00",
"end_utc":"06:00:00",
...
"lang_iso":"eng",
"language":"English"
}
разметки:
<div ng-controller="StationListController as stationList" ng-init="init()">
...
<div ng-repeat="location in station.locations" class="panel panel-default">
...
<select class="form-control" id="{{'locationLang-' + location.id}}" ng-model="location.lang_iso" ng-options="lang.iso as lang.language for lang in locLanguages track by lang.iso"></select>
JS:
$scope.init = function() {
$http.get($scope.ajaxurl + '?_mode=languages&_task=list').success(function(data, success) {
$scope.locLanguages = data;
}).error(function(error) {});
};
Результат:
<select ng-options="lang.iso as lang.language for lang in locLanguages track by lang.iso" ng-model="location.lang_iso" id="locationLang-844" class="form-control ng-pristine ng-valid ng-touched">
<option value="?" selected="selected"></option>
<option value="abk" label="Abkhazian">Abkhazian</option>
<option value="aar" label="Afar">Afar</option>
<option value="afr" label="Afrikaans">Afrikaans</option>
...
</select>
Как бы я это делать, когда язык по умолчанию отличается для каждого местоположения I перебрать в родительском нг-повторить? – cj5
Возможно, вы можете использовать значение $ index для установки значения по умолчанию. Это означает, что значение по умолчанию отражает текущий язык, но мое предложение состоит в том, что по умолчанию не предполагается «язык по умолчанию» - он просто по умолчанию препятствует тому, чтобы пустое пространство оставалось там. Другим вариантом было бы установить по умолчанию что-то вроде «Не выбран» или «Выберите язык» и сделать это первым вариантом в вашем списке. Затем отклоните отправку формы, если модель = «Не выбрано» –
Хорошо, я попробовал то, что вы предложили ранее: ''. Я установил атрибут ng-model в selectedLanguage, который равен '{iso: 'eng', language: 'English'}', но он все еще ничего не выбирает. – cj5