Javascript 映射过程中自动生成的每个可观察对象的后处理

Javascript 映射过程中自动生成的每个可观察对象的后处理,javascript,jquery,knockout.js,knockout-mapping-plugin,Javascript,Jquery,Knockout.js,Knockout Mapping Plugin,问题: 我有以下视图模型。很简单,不是吗?在现实世界中,模型将更加复杂,具有许多层次结构。我想要实现的是,对每个自动生成的可观察对象进行一些后处理,并为其提供“扩展”功能。有了敲除和映射插件,这可能吗 var模型={ 风险ID:1, 风险名称:“洪水风险” }; 变量映射选项={ /*在自动映射期间,如何为每个自动生成的可观察对象调用“扩展”函数*/ 创建:函数(选项){ 返回新的RiskViewModel(options.data); } }; 函数RiskViewModel(模型){ va

问题:

我有以下视图模型。很简单,不是吗?在现实世界中,模型将更加复杂,具有许多层次结构。我想要实现的是,对每个自动生成的可观察对象进行一些后处理,并为其提供“扩展”功能。有了敲除和映射插件,这可能吗

var模型={
风险ID:1,
风险名称:“洪水风险”
};
变量映射选项={
/*在自动映射期间,如何为每个自动生成的可观察对象调用“扩展”函数*/
创建:函数(选项){
返回新的RiskViewModel(options.data);
}
};
函数RiskViewModel(模型){
var self=ko.mapping.fromJS(模型,{},this);
/*如何自动化接下来的两条生产线*/
extend({propertyName:'RiskID'});
extend({propertyName:'RiskName'});
}
ko.extenders.propertyName=函数(目标,propertyName){
target.propertyName=propertyName;
回报目标;
}
var viewModel=ko.mapping.fromJS(模型,映射选项);
应用绑定(视图模型)



您可以使用
Object.keys()
检索模型中所有键的数组。您可以使用
Array.prototype.forEach
对其进行循环

例如:

Object.keys(model).forEach(k => {
  self[k].extend({ propertyName: k })
});
不过,我不确定它是否能很好地与
映射
插件配合使用。首先,为什么要将
propertyName
添加到可观察对象中