Knockout.js 使用knockoutjs+更新数据;映射插件(+;解决方案)

Knockout.js 使用knockoutjs+更新数据;映射插件(+;解决方案),knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我正在尝试使用映射插件在knockoutjs视图模型中插入和更新数据。 初始数据如下所示(数字映射在“id”字段中,文本映射在“名称”字段中): 一个 二二 三三 四四 五五 六六 七七 八八 九九 十分 11 11 12点12分 十三 14 14 十五 我得到的是 1 oneMOD 二二 三三 四四 16 16 我想得到的是: 1 oneMOD 二二 三三 四四 八八 九九 十分 11 11 12点12分 十三 14 14 十五 1

我正在尝试使用映射插件在knockoutjs视图模型中插入和更新数据。
初始数据如下所示(数字映射在“id”字段中,文本映射在“名称”字段中):

  • 一个
    • 二二
      • 三三
      • 四四
    • 五五
      • 六六
      • 七七
  • 八八
    • 九九
      • 十分
      • 11 11
    • 12点12分
      • 十三
      • 14 14
  • 十五
我得到的是

  • 1 oneMOD
    • 二二
      • 三三
      • 四四
  • 16 16
我想得到的是:

  • 1 oneMOD
    • 二二
      • 三三
      • 四四
  • 八八
    • 九九
      • 十分
      • 11 11
    • 12点12分
      • 十三
      • 14 14
  • 十五
  • 16 16
换言之:

  • 将字段“name”中的元素1从“one”更新为“oneMOD” (由于字段id映射为键)
  • 5和其子被删除(或未被触及)
  • 8和15未触及
  • 16补充说
看起来ko.mapping.fromJS会替换新数据,而不是更新它们。
我肯定错过了什么

您可以在此处找到代码:

TIA
吉安尼

编辑

好的,我误解了使用ko.mapping.fromJS进行“更新”的目的。
如果要更新模型,必须发送包含更新的完整原始数据集。
如果需要部分更新,则必须执行。
我要去考试

这(knockoutjs使用updatefromjs替换应该添加的值)证实了我的怀疑

我希望这会有帮助

再见,

Gianni

在您最初的问题中,ko.mapping通过创建新的viewmodel来工作。因此,当您第二次执行此映射时,将替换以前的视图模型。更新基本上做同样的事情

您要求mapping做的是了解您的数据并自动更新现有记录和添加新记录。没那么聪明。您必须编写代码来读取更新结果,并在原始viewmodel中更新/添加正确的记录