Mar*_*rno 10 mapping knockout.js
我遇到了KnockoutJS映射插件的问题,我需要执行以下操作:
在这个小提琴示例中,我正在尝试将孩子正确映射到他们的自定义创建.预期的结果是每个孩子都有添加的描述属性.从小提琴中,结果应为:
我可以在这个小提琴例子中展示预期的行为.请注意,在此代码中,我必须有两个数据集,第一个具有一个空数组的子对象.以下代码行将导致自定义创建子对象:
ko.mapping.fromJS(additionalData, parentMapping, viewModel);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这需要具有空的初始子节点和映射两次.这是不可接受的,因为现实中的代码具有更深层次的层次结构.
除了上述内容之外,我还尝试在parentMapping中添加以下代码:
var mapping = { 'ignore': ["children"] };
var innerModel = ko.mapping.fromJS(options.data, mapping);
//for brevity
innerModel.children = ko.mapping.fromJS(options.data.children, childMapping);
Run Code Online (Sandbox Code Playgroud)
这具有在初始映射上映射子对象的效果.但是,所有后续映射都会忽略children属性.
有没有办法使用Knockout Mapping自定义父对象和子对象的创建?
谢谢.
Dar*_*ian 17
var viewModel = {};
var data = {
id: "1",
firstName: 'Adam',
lastName: "Smith",
children: [ {id: "2", name: "Bob", age: 5}, {id: "3", name: "Chris", age: 7 }]
};
var Parent = function(data){
ko.mapping.fromJS(data, mapping, this)
};
var mapping = {
create:function(options){
var parent = new Parent(options.data);
parent.fullName = ko.computed(function(){
return parent.firstName() + " " + parent.lastName();
});
return parent;
},
'children': {
create: function(options) {
options.data.description = ko.computed(function(){
return options.data.name + " is " + options.data.age + " years old ";
});
return ko.mapping.fromJS(options.data);
}
}
};
viewModel = ko.mapping.fromJS(data, mapping);
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9689 次 |
| 最近记录: |