2016-06-07 3 views
0

У меня возникла проблема с получением моего выбора, чтобы правильно установить параметр по умолчанию для моих данных. Я получаю данные с сервера через вызов Ajax. Затем я хочу иметь возможность редактировать эти данные с помощью формы. Я хочу указать выбор, чтобы использовать параметры, установленные в объекте контроллера, но когда вы редактируете выбор, я хочу, чтобы модель указывала на данные ajax, потому что это то, что я пишу обратно на сервер. Как вы можете видеть в моем plunkr, каждый из четырех элементов должен иметь свои варианты выбора, но вместо этого все избранные начинают пустым.Угловая опция по умолчанию

В официальной документации на угловой они говорят сделать следующее, чтобы установить значение по умолчанию:

angular.module('defaultValueSelect', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.data = { 
    availableOptions: [ 
    {id: '1', name: 'Option A'}, 
    {id: '2', name: 'Option B'}, 
    {id: '3', name: 'Option C'} 
    ], 
    selectedOption: {id: '3', name: 'Option C'} //This sets the default value of the select in the ui 
    }; 
}]); 

//Then in the HTML file: 
<select name="mySelect" id="mySelect" 
    ng-options="option.name for option in data.availableOptions track by option.id" 
    ng-model="data.selectedOption"></select> 

В моем случае варианты не в АЯКС данных, однако, только выбранный вариант. Поэтому я хочу управлять доступными параметрами через объект контроллера, но привязывать выбор к данным ajax. Благодарю.

https://plnkr.co/edit/Q16QLT?p=preview

ответ

1

Вы должны определить, какое свойство "опции" Вы хотите связать с:

<select ng-options="option.value as option.text for option in options" ng-model="item.select"></select> 

Работа демо https://plnkr.co/edit/BezGaYjykfQrFQ9nZop2?p=preview

+0

Так что это в основном достижения того, что я хочу с одной проблемой. Кажется, что это меняет атрибут value для каждой опции на «string: {value}» вместо «{value}». Осмотрите параметры выбора на этом обновленном плунжере, чтобы понять, что я имею в виду. Любая идея, как предотвратить это, но сохранить другие функции? https://plnkr.co/edit/66I229?p=preview –

+0

Почему это вас беспокоит? когда выбранная измененная модель изменена до правого значения. см. обновленный плункер https://plnkr.co/edit/BezGaYjykfQrFQ9nZop2?p=preview –

0

Изменить ваш выбор это:

<select ng-options="option.text as option.text for option in options" ng-model="item.select"></select> 
0

Это определенно будет работать:

Поскольку ваши нг-модель содержит полный объект варианта, вы должны связать его с объектом в нг-опциях, а также

<select name="mySelect" id="mySelect" 
    ng-options="option as option.name for option in data.availableOptions track by option.id" 
    ng-model="data.selectedOption"></select> 
Смежные вопросы