Получить выбранные значения из динамически созданных выпадающих списков - программирование

Получить выбранные значения из динамически созданных выпадающих списков

Я использую KnockoutJS и durandalJS 2.0. Я динамически , добавляя раскрывающиеся два раскрытия на основе записей таблицы базы данных и заполняя их данными из другой таблицы. В каждом раскрывающемся списке есть флажок . Как получить выбранные раскрывающиеся значения?

enter image description here

модель

var dataToAdd = {
    mydata_Id: ko.observable(),
    mydata_Name: ko.observable(),
    mydata_data: ko.observableArray([dataTask])
};

var dataTask = {
    taskId: ko.observable(),
    dropdownId: ko.observable()
};

var taskList=ko.observableArray([]);//get data from database table. Consider there are two entries.
var dropdownData=ko.observableArray([]); //get the dropdown data

Просмотр

//Since *taskList* has two entries, two dropdowns with their respective checkbox will get generated.
<div data-bind="foreach:taskList">
    <label><input type="checkbox" data-bind="checked: true" />
    <span data-bind="text:Name"></span></label>    

    <select data-bind="options: $root.DropdownData, optionsValue: 'Id', optionsText: 'Name', optionsCaption: 'Select...', value: $root.dataTask.dropdownId</select>
</div>

Первый. Как получить выбранное значение для каждого раскрывающегося списка при нажатии кнопки ADD? Когда я использую значение: $root.dataTask.dropdownId, оба раскрывающихся списка изменяются на одно и то же выбранное значение. Когда я устанавливаю флажок, выпадающий список должен быть включен и после выбора, я должен иметь возможность обновлять массив observable, как показано ниже:

{taskId:44,dropdownId:10},{taskId:55,dropdownId:11}

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

4b9b3361

Ответ 1

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

http://jsfiddle.net/Lxt7E/1/

<div data-bind="foreach: Dropdowns">
    <label><input type="checkbox" data-bind="checked: checkedObs" />
    <span data-bind="text: label"></span></label>    

    <select data-bind="disable: checkedObs, options: theseOptions, optionsText: 'Name', optionsCaption: 'Select...', value: selectedOption"></select>
</div>

<button data-bind="click: addButton">Add</button>

Вкратце, что вы можете сделать, это создать экземпляры модели, такие как "выпадающее меню" в этом случае, и использовать привязку для нокаута foreach для отображения числа n из них. Экземпляр выпадающего списка содержит наблюдаемые, которые выполняют то, что вы ищете, и могут использоваться в функции add, чтобы решить, следует ли записывать значения или w/e