IRO*_*MAN 10 knockout.js durandal-2.0
我正在使用KnockoutJS和durandalJS 2.0.我正在基于数据库表条目动态添加两个下拉列表,并用另一个表中的数据填充它们.每个下拉菜单都有一个复选框.如何获取所选的下拉值?

楷模
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
Run Code Online (Sandbox Code Playgroud)
视图
//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>
Run Code Online (Sandbox Code Playgroud)
第一:当我点击ADD按钮时,如何获取每个下拉列表的选定值?当我使用值:时$root.dataTask.dropdownId,两个下拉列表都会更改为相同的选定值.当我勾选复选框时,应启用下拉列表,选择后,我应该可以更新observable如下所示的数组:
{taskId:44,dropdownId:10},{taskId:55,dropdownId:11}
Run Code Online (Sandbox Code Playgroud)
第二:此外,当我取消选中复选框时,相应的下拉列表应该被禁用,并且应该从observable数组中重新输入该条目.
你的问题有很多不确定性,不过我已经包含了一个工作小提琴来展示你正在寻找什么 -
<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>
Run Code Online (Sandbox Code Playgroud)
简而言之,您可以做的是创建模型的实例(例如本例中的“dropdown”),并使用 Knockout 的 foreach 绑定来渲染n它们的数量。下拉列表的实例包含执行您正在查找的操作的可观察量,并且可以在add函数中使用来决定是否写入值或 w/e
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |