我正在使用淘汰赛映射插件。 我得到的简化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属性时遇到问题。 我开始怀疑自己是不是以错误的方式接近这一点。
这是JsFiddle
更新
根据以下答案,这是一个有效的JsFiddle。
答案 0 :(得分:1)
您在小提琴中看到的问题是您的映射的“创建”方法未被调用。
您已将映射定义为
var mappingOptions = {
Items: {
create: function (mappingoptions) {
...
}
}
};
所以ko.mapping正在寻找一个名为“Items”的数据对象的数组属性,在每个项目上它将运行“create”方法。但是,您的数据对象“jsn”没有名为“Items”的集合。
var jsondata = [
{"ID":1,"Title":"Title 1"},
{"ID":2,"Title":"Title 2"}
]
如果您将jsondata更改为:
var jsondata = {
Items : [
{"ID":1,"Title":"Title 1"},
{"ID":2,"Title":"Title 2"}
]
}
你应该看到“create”方法执行,你的isDirty标志将被添加。
您还可以更改映射以消除“项目”:
var mappingOptions = {
create: function (mappingoptions) {
...
}
};
希望这有帮助!