【发布时间】:2013-03-09 17:12:15
【问题描述】:
我在使用 KnockoutJS 的映射插件时遇到了问题,我需要执行以下操作:
- 自定义对象的映射创建
- 从 #1 自定义嵌套对象数组的映射创建。
在这个fiddle example 中,我正在尝试将 children 正确映射到他们的自定义创建。预期结果是每个 children 都添加了 description 属性。从小提琴,结果应该是:
- 亚当·史密斯
- 鲍勃 5 岁
- 克里斯 7 岁
我可以在这个fiddle example 中演示预期的行为。请注意,在这段代码中,我必须有两个数据集,第一个有一个空的子对象数组。下面这行代码会引起子对象的自定义创建:
ko.mapping.fromJS(additionalData, parentMapping, viewModel);
不幸的是,这需要有空的初始 children 和两次映射。这是不可接受的,因为实际上代码的层次结构要深得多。
除了上述之外,我还尝试在 parentMapping 中添加以下代码:
var mapping = { 'ignore': ["children"] };
var innerModel = ko.mapping.fromJS(options.data, mapping);
//for brevity
innerModel.children = ko.mapping.fromJS(options.data.children, childMapping);
这具有将 children 对象映射到初始映射的效果。但是,children 属性的所有后续映射都会被忽略。
有没有办法使用 Knockout Mapping 自定义创建父对象和子对象?
谢谢。
【问题讨论】:
-
谢谢你,保罗,这个解决方案对我有用。
标签: knockout.js mapping