将新对象添加到映射属性 - KnockoutJS

时间:2014-01-28 14:38:35

标签: knockout.js knockout-mapping-plugin

我试图在初始页面加载时加载带有映射数据的ViewModel属性,然后在以后将新JSON数据附加到此映射属性。按照此处的文档(http://knockoutjs.com/documentation/plugins-mapping.html),我需要做的就是调用ko.mapping.fromJS(data, {}, someObject);来合并datasomeObject。有人能告诉我为什么这不起作用?请参阅以下小提琴示例:

http://jsfiddle.net/m4uKe/

我希望

{
  "Foo": [
    {
      "Property": "Value1"
    }
  ]
}

成为

{
  "Foo": [
    {
      "Property": "Value1"
    },
    {
      "Property": "Value2"
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

您应该push一个项目到第一次调用fromJS时获得的可观察数组。所以改变这一行:

ko.mapping.fromJS(data2, {}, self.Foo);

到这个

self.Foo.push(ko.mapping.fromJS(data2));

实例:http://jsfiddle.net/m4uKe/2/