Установка выбранных значений для элементов выбора привязки ng-options

242
36

Попробуйте использовать соответствующий код: http://jsfiddle.net/gFCzV/7/


Я пытаюсь установить выбранное значение выпадающего списка, которое связано с дочерней коллекцией объекта, на который ссылается ng-repeat. Я не знаю, как установить выбранную опцию, поскольку я не могу ссылаться на связанную с ней коллекцию каким-либо образом, о котором я знаю.


HTML


<div ng-app="myApp" ng-controller="SomeController">
<div ng-repeat="Person in People">
<div class="listheader">{{Person.firstName}} {{Person.lastName}}</div>
<div class="listitem" ng-repeat="Choice in Person.Choices">
{{Choice.Name}}:
<select
ng-model="Choice.SelectedOption"
ng-options="choice.Name for choice in Choice.Options"></select>
{{Choice.SelectedOption.ID}}
</div>
</div>
</div>

JS


var myApp = angular.module('myApp', []);
myApp.controller("SomeController", function($scope) {
$scope.People = [{
"firstName": "John",
"lastName": "Doe",
"Choices": [
{
"Name":"Dinner",
"Options":[{Name:"Fish",ID:1}, {Name:"Chicken",ID:2}, {Name:"Beef",ID:3}],
"SelectedOption":{Name:"Chicken",ID:2} //this doesn't work
},
{
"Name":"Lunch",
"Options":[{Name:"Macaroni",ID:1}, {Name:"PB&J",ID:2}, {Name:"Fish",ID:3}],
"SelectedOption":""
}
],
}, {
"firstName": "Jane",
"lastName": "Doe"
}];
});

Является ли это тем случаем, когда я действительно должен использовать ng-init с SelectedIndex на модели?

спросил(а) 2021-01-19T22:08:18+03:00 6 месяцев, 1 неделя назад
1
Решение
378

Если вы используете AngularJS 1.2, вы можете использовать 'track by', чтобы сообщить Angular, как сравнивать объекты.


<select 
ng-model="Choice.SelectedOption"
ng-options="choice.Name for choice in Choice.Options track by choice.ID">
</select>

Обновлен скрипт http://jsfiddle.net/gFCzV/34/

ответил(а) 2021-01-19T22:08:18+03:00 6 месяцев, 1 неделя назад
246

Поле ID можно использовать как идентификатор равенства. Вы не можете использовать adhoc-объект для этого случая, потому что AngularJS проверяет ссылки на равенство при сравнении объектов.

<select 
ng-model="Choice.SelectedOption.ID"
ng-options="choice.ID as choice.Name for choice in Choice.Options">
</select>

ответил(а) 2021-01-19T22:08:18+03:00 6 месяцев, 1 неделя назад
140

Использование ng-selected для выбранного значения. Я успешно реализовал код в AngularJS v1.3.2


<select ng-model="objBillingAddress.StateId"  >
<option data-ng-repeat="c in States" value="{{c.StateId}}" ng-selected="objBillingAddress.BillingStateId==c.StateId">{{c.StateName}}</option>
</select>

ответил(а) 2021-01-19T22:08:18+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема