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

我试过了,但是没有用,在这个例子中,我使用的是敲除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 });
                }
            }
        }
    }
}

07-24 20:52