Knockout映射:JSON在多次映射和保存时会增长

Knockout Mapping: JSON grows when mapping and saving multiple times

本文关键字:映射 保存 JSON Knockout      更新时间:2023-09-26

当我取一个敲除对象,通过ko.toJSON将其序列化为JSON,然后多次使用ko.mapping.fromJSON将其从JSON中取消序列化时,加载的对象具有递归增长的__ko_mapping__属性。

样本代码:

var joe = new Person();
for (var i = 0; i < 10; i++) {
    var json = ko.toJSON(joe);
    joe = ko.mapping.fromJSON(json);
}

复制它的简单JSFiddle:

http://jsfiddle.net/Gc89Q/1/

如何在不让序列化的json表单变得巨大的情况下多次加载和保存?

我考虑在加载时将__ko_mapping__属性设置为undefined,但不知道是否有更好的方法或我缺少的东西。

这是我提交问题的bug吗?

不要覆盖模型。相反,将其传递给fromJSON,以便更新模型:

ko.mapping.fromJSON(json, joe);

http://jsfiddle.net/Gc89Q/2/