Javascript 测试对象上的属性是否为单个可观察(而不是可观察)属性
我希望能够迭代一个对象的knockoutJS可观察属性,并将它们复制到另一个包含其他可观察属性的对象。目标对象存在于ObservalArray中(在这种情况下,所选对象是目标,并通过“编辑”按钮单击进行设置) “项”在绑定到对话框的viewmodel中传递。如果单击“取消”,则忽略该项;如果单击“确定”,则将数据持久保存在服务器上,然后将项属性复制到选定项 目前我是这样做的:Javascript 测试对象上的属性是否为单个可观察(而不是可观察)属性,javascript,knockout.js,Javascript,Knockout.js,我希望能够迭代一个对象的knockoutJS可观察属性,并将它们复制到另一个包含其他可观察属性的对象。目标对象存在于ObservalArray中(在这种情况下,所选对象是目标,并通过“编辑”按钮单击进行设置) “项”在绑定到对话框的viewmodel中传递。如果单击“取消”,则忽略该项;如果单击“确定”,则将数据持久保存在服务器上,然后将项属性复制到选定项 目前我是这样做的: function AttachCommitData(item) { fo
function AttachCommitData(item) {
for ( var prop in item) {
if ( prop !== "undefined" ) {
vm.selected[item](item[prop]);
}
}
}
我不确定这是否是实现它的方法,但它会抛出一个异常,因为该项包含一个observableArray,而对observableArray的复制失败。无论如何,是否只对可观测项进行迭代,而忽略循环中的任何其他内容,如可观测项、函数等
如果您还可以建议,这是否是将一组可观测数据附加到另一组的最佳方式。我可能会为此使用映射插件:
function attachCommitData(item){
ko.mapping.fromJS(ko.mapping.toJS(item), vm.selected);
}
有关详细信息,请参阅映射插件。我已尝试将该项映射到vm.selected,其中vm.selected指向ObservalArray中已存在的元素,该元素也是通过映射插件创建的。它似乎没有更新它。有什么想法吗?您可能想在JSFIDLE上发布代码来澄清您的问题。