Knockout.js 使用未命名数组并添加isDirty属性的剔除自动映射
我正在使用淘汰映射插件。 我得到的简化json是一个未命名数组的形式Knockout.js 使用未命名数组并添加isDirty属性的剔除自动映射,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我正在使用淘汰映射插件。 我得到的简化json是一个未命名数组的形式 [ {"ID":1,"Title":"Title 1"}, {"ID":2,"Title":"Title 2"}, {"ID":3,"Title":"Title 3"} ] 为了在我的viewmodel中有一个命名的“Items”属性,我这样分配: var model = { Items: ko.mapping.fromJS(jsondata, mappingOptions) } 在映射过程中添加isDirty属
[
{"ID":1,"Title":"Title 1"},
{"ID":2,"Title":"Title 2"},
{"ID":3,"Title":"Title 3"}
]
为了在我的viewmodel中有一个命名的“Items”属性,我这样分配:
var model = { Items: ko.mapping.fromJS(jsondata, mappingOptions) }
在映射过程中添加isDirty属性时遇到问题。
我开始怀疑我是不是走错了路
这是一个
更新
这是一个基于以下答案的工作。您在小提琴中看到的问题是没有调用映射的“创建”方法 您已将映射定义为
var mappingOptions = {
Items: {
create: function (mappingoptions) {
...
}
}
};
因此,ko.mapping正在查找数据对象的一个名为“Items”的数组属性,它将对其中的每个项运行“create”方法。但是,数据对象“jsn”没有名为“Items”的集合
如果您将jsondata更改为:
var jsondata = {
Items : [
{"ID":1,"Title":"Title 1"},
{"ID":2,"Title":"Title 2"}
]
}
您应该看到“create”方法被执行,并且您的isDirty标志将被添加
您还可以更改映射以消除“项”:
希望这有帮助 谢谢,就是这样。
var jsondata = {
Items : [
{"ID":1,"Title":"Title 1"},
{"ID":2,"Title":"Title 2"}
]
}
var mappingOptions = {
create: function (mappingoptions) {
...
}
};