1

工作演示

我面临以下问题:
我有一个 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 代码,其中包含一个下拉列表、文本框、几个单选按钮和两个列表控件。所以,重点是:下拉列表应该包含与数组长度一样多customExportFileArray的项目,并且项目名称(optionsText)应该是FileName数组的属性。(看起来它现在可以工作了)。接下来,如果从下拉列表中更改项目,假设Template1文件名文本框应由数组(Template1)中的 FileName 属性填充,应选中 Excel 单选按钮,应选中保留过滤器设置,应取消选中 Compatison Metrics 和“要选择的转换类型From' 应该包含一个IncludeInExportConversionTypesSelectList数组列表(Text = Title)
但是如果在我的 HTML 代码中看到我做错了什么,但不知道到底是什么。它不会通过从下拉列表中更改项目来加载特定数据,但我认为我所做的一切都是正确的。
附加问题:如何保存特定 Item 数组的更改(我的意思是,例如,您更改了名称,或更改了选中的单选按钮)。
任何帮助将不胜感激。

提前致谢。

工作演示

4

1 回答 1

3

您需要将下拉列表的值绑定到名为“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/

如您所见,下拉列表的值绑定现在指向这个新属性,我必须更改选项文本绑定的方式以将对象作为值使用。

编辑:

此外,您正在尝试将布尔值绑定到 RadioButton 的选中属性,它们并不是真正设计的。如果你想绑定到一个布尔属性,那么你应该使用复选框控件,因为它是打开或关闭的。

希望这可以帮助!

于 2012-12-03T19:00:47.520 回答