工作演示
我面临以下问题:
有一个json数组:
self.customExportFileArray = ko.observableArray([
{
"IncludeInExportConversionTypesSelectList" :
[
{
"ConversionGroupID" : 1,
"Title" : "Quote Start - Auto"
},
{
"ConversionGroupID" : 2,
"Title" : "Quote Finish - Auto"
},
{
"ConversionGroupID" : 5,
"Title" : "Sales Data"
}
],
"ChooseFromConversionTypesSelectList" : [],
"FileName" : "Template1",
"FileFormat" : "Excel",
"FilterSettings" : true,
"ComparisonMetrics" : false
},
{
"IncludeInExportConversionTypesSelectList":
[
{
"ConversionGroupID" : 1,
"Title" : "Quote Start - Auto"
},
{
"ConversionGroupID" : 5,
"Title" : "Sales Data"
}
],
"ChooseFromConversionTypesSelectList":
[
{
"ConversionGroupID" : 2,
"Title" : "Quote Finish - Auto"
}
],
"FileName" : "Template2",
"FileFormat" : "CSV",
"FilterSettings" : false,
"ComparisonMetrics" : true
}
]);
}
我有一些HTML代码,其中包含一个下拉列表、文本框、几个单选按钮和两个列表控件。因此,重点是:下拉列表中包含的Item应与customExportFileArray
数组的长度一样多,Item name(optionsText)应为数组中的FileName
属性。(看起来现在有效了)。接下来,如果从下拉列表中更改项目,假设Template1
文件名文本框应由数组(Template1)中的FileName属性填充,Excel单选按钮应选中,保留筛选器设置应选中,Compatison Metrics应取消选中,"要从中选择的转换类型"应包含IncludeInExportConversionTypesSelectList
数组的列表(文本=标题)
但如果在我的HTML代码中看到我做错了什么,但不知道具体是什么。它不会通过从下拉列表中更改Item来加载特定的数据,但我认为我做这一切的方式都是正确的
附加问题:如何保存对特定Item数组的更改(我的意思是,例如,您更改了名称或更改了选中的单选按钮)。
如有任何帮助,我们将不胜感激
提前感谢
工作演示
您需要将下拉列表的值绑定到一个名为"SelectedTemplate"的可观察属性,以存储所选值,然后将可变字段绑定到所选对象:
<select data-bind="options: customExportFileArray, optionsText: function(item) { return item.FileName }, value: selectedTemplate">
<input type="text" data-bind="value: selectedTemplate().FileName"/>
self.selectedTemplate = ko.observable();
self.customExportFileArray = ko.observableArray([
{
....
我修改了你的jsfiddle如下:http://jsfiddle.net/ptmwr/11/
正如您所看到的,下拉列表的值绑定现在指向这个新属性,我不得不更改optionstext绑定的方式,以将对象作为值进行处理。
编辑:
此外,您还试图将布尔值绑定到RadioButton的已检查属性,而它们并不是真正为之设计的。如果你想绑定到一个布尔属性,那么你应该使用复选框控件,因为它要么打开要么关闭
希望这能有所帮助!