javascript - 如何为 knockout View 模型中的每个可观察对象添加扩展器?

标签 javascript knockout.js knockout-mapping-plugin

我正在尝试向 View 模型中的所有可观察对象添加扩展器。我的数据来自服务器,所以我无法一一指定属性。

我尝试了这个,但它不起作用,我在本示例中使用了 knockout js 网页中的 logChange 扩展程序。

var addingExtender = {
  key: function (data) {
        return data.id;
    },
  create: function(options) {
            return ko.observable(true).extend({ logChange: "Value Changed" });

    }
};
ko.mapping.fromJS(data, addingExtender, self);

最佳答案

我最终做了一个函数来一一添加扩展器。

function addStorage(koViewModel,name) {
    for (var observableKey in koViewModel) {
        if (ko.isObservable(koViewModel[observableKey]) 
        && !isObservableArray(koViewModel[observableKey])) {

            koViewModel[observableKey].extend({ persist: name === undefined ?
                   url + observableKey : url + name +     "." + observableKey });
        }

        if (typeof koViewModel[observableKey] === "object") {
            for (var observables in koViewModel[observableKey]) {
                if (ko.isObservable(koViewModel[observableKey][observables]) 
                && !isObservableArray(koViewModel[observableKey][observables])) {

                    koViewModel[observableKey][observables].extend({ persist: url +
                           observableKey + "." + observables });
                }
            }
        }
    }
}

关于javascript - 如何为 knockout View 模型中的每个可观察对象添加扩展器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793562/

相关文章:

javascript - 创建一个新选项并使用 mootools 1.2 注入(inject)选择框

javascript - 将声明性绑定(bind)与 API 数据结合使用

css - Bootstrap Multiselect 不显示下拉列表

asp.net-mvc - 从 aspnetmvc 序列化时忽略 knockout View 模型上的属性

javascript - 从 innerHTML 或链接到 wikipedia.com 中删除所有 anchor 标记

Javascript sort() 不能正确按字母顺序排列

javascript - 如何将 ko.mapping.fromJS 数组中的项目复制到 View 模型的另一个属性?

javascript - Mongoose + Mlabs + 海量数据

javascript - 使用 KnockoutJs 跟踪初始映射的最佳方法