knockout sortable和更新observableArray不起作用

时间:2012-12-18 14:52:25

标签: knockout.js


实际上我的代码中有2个问题,这是指向 jsFiddle Not Working Demo 的链接。
问题1:我无法将任何项目从一个列表拖放到另一个列表 问题2:拖放操作完成后,如何从阵列中更改我的特定项目?

这是我的可观察数组:

self.customExportFileArray = ko.observableArray([
      {
        "IncludeInExportConversionTypesSelectList" :
          [
            {
              "ConversionGroupID" : "1",
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : "2",
              "Title" : "Quote Finish - Auto"
            },
            {
              "ConversionGroupID" : "3",
              "Title" : "Sales Data"
            }
          ],
        "ChooseFromConversionTypesSelectList" : [],
        "FileName" : "Template1"
      },
      {
        "IncludeInExportConversionTypesSelectList":
          [
            {
              "ConversionGroupID" : "1",
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : "2",
              "Title" : "Sales Data"
            }
          ],
        "ChooseFromConversionTypesSelectList":
          [
            {
              "Title" : "Quote Finish - Auto"
            }
          ],
        "FileName" : "Template2"
      }
    ]);


因此,例如,我从下拉列表中选择了“Template1”,selectedTemplate属性将从数组中获取第二项,然后我将项目从左侧移动到右侧,反之亦然IncludeInExportConversionTypesSelectList(列表的右侧) )和ChooseFromConversionTypesSelectList(列表的左侧)数组应该更新,点击Grab all data from specific template按钮它应该返回更新的特定数组(根据预先选择的下拉控件)。

有谁知道我做错了什么?因为我在添加下拉列表之前有工作代码。

任何帮助都将受到高度赞赏 提前致谢

1 个答案:

答案 0 :(得分:1)

可排序插件期望拖动项目的数组是observableArrays。在您的情况下,只有您的整体数组是可观察的。

您可能希望确保单个数组是可观察的。以下是一个示例:http://jsfiddle.net/rniemeyer/bSuJx/

    self.customExportFileArray = ko.observableArray([
      {
        "IncludeInExportConversionTypesSelectList" : ko.observableArray(
          [
            {
              "ConversionGroupID" : "1",
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : "2",
              "Title" : "Quote Finish - Auto"
            },
            {
              "ConversionGroupID" : "3",
              "Title" : "Sales Data"
            }
          ]),
        "ChooseFromConversionTypesSelectList" : ko.observableArray([]),
        "FileName" : "Template1"
      },
      {
        "IncludeInExportConversionTypesSelectList": ko.observableArray(
          [
            {
              "ConversionGroupID" : "1",
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : "2",
              "Title" : "Sales Data"
            }
          ]),
        "ChooseFromConversionTypesSelectList": ko.observableArray(
          [
            {
              "Title" : "Quote Finish - Auto"
            }
          ]),
        "FileName" : "Template2"
      }
    ]);

如果这表示来自服务器的数据,那么在应用绑定之前,您可能需要处理它以生成observableArrays。