【问题标题】:Test if a property on an object is a single observable (and not an observableArray)测试对象上的属性是否是单个 observable(而不是 observableArray)
【发布时间】:2012-02-13 15:35:45
【问题描述】:

我希望能够遍历一个对象的 knockoutJS 可观察属性并将它们复制到另一个包含其他可观察属性的对象。目标对象存在于 observableArray 中(在这种情况下,选择的是目标,并在单击“编辑”按钮时设置)。

'Item' 在绑定到对话框的视图模型中传递。如果单击取消,则忽略该项目,如果单击确定,则将数据持久化在服务器上,然后将项目属性复制到选中。

目前我正在这样做:

function AttachCommitData(item) {                
        for ( var prop in item) {            
            if ( prop !== "undefined" ) {
                vm.selected[item](item[prop]);
            }
        }
    }

我不确定这是否是这样做的方法,但它会引发异常,因为该项目包含一个 observableArray,并且复制到 observable 失败。无论如何只迭代可观察对象并错过循环中的其他任何内容,例如 observableArrays、函数等?

如果您也可以提出建议,这是否是将一组可观察对象附加到另一组的最佳方法。

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    我可能会为此使用映射插件:

    function attachCommitData(item){
        ko.mapping.fromJS(ko.mapping.toJS(item), vm.selected);
    }
    

    详见映射插件documentation

    【讨论】:

    • 我尝试将项目映射到 vm.selected,其中 vm.selected 指向已经在 observableArray 中的元素,该元素也是通过映射插件创建的。它似乎没有更新它。有什么想法吗?
    • 您可能想在 jsfiddle 上发布您的代码以澄清您的问题。
    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2023-03-27
    • 2014-12-24
    相关资源
    最近更新 更多