【问题标题】:Adding new object to mapped property - KnockoutJS将新对象添加到映射属性 - KnockoutJS
【发布时间】:2014-02-19 22:13:48
【问题描述】:

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

http://jsfiddle.net/m4uKe/

我希望

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

成为

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

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

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

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

    到这里

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

    现场示例:http://jsfiddle.net/m4uKe/2/

    【讨论】:

    • 谢谢,这成功了。我想补充一个后续:如果你只是像这样推送data2,它不会像最初映射的其他元素一样被观察到。所以我为此做的修复是映射data2 本身,然后推送它。 self.Foo.push(ko.mapping.fromJS(data2));
    • 啊,是的。我错过了。好喊。我也会为未来的访客更新答案。
    猜你喜欢
    • 2012-01-14
    • 2017-03-16
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多