Knockout是一个例子,使用映射插件的动态viewmodule

时间:2013-03-12 15:38:08

标签: knockout.js knockout-mapping-plugin

我正在使用Ryan Niemeyer's Dirty Flag。 他的方法的一个例子可以在这个jsFiddle中看到。

他在ViewModel上有一个dirtyItems方法

this.dirtyItems = ko.computed(function() {
  return ko.utils.arrayFilter(this.items(), function(item) {
    return item.dirtyFlag.isDirty();
  });
}, this);

但是,我似乎无法使用他的dirtyItems方法处理我的数据。最大的区别是我正在使用映射插件。 我尝试过的所有东西都是空的。

以下是我实施的jsFiddle

1 个答案:

答案 0 :(得分:3)

您可以将dirtyFlag添加到ProfilePropertyValue,如:

var mappingOptions = {
    ProfilePropertyValue: {
        create: function (mappingoptions) {
            var data = mappingoptions.data;
            data.ProfilePropertyValue = data.ProfilePropertyValue || {
                "ID": null,
                    "Checkbox": ko.observable(false)
            };

            var result = ko.mapping.fromJS(data);
            result.dirtyFlag = ko.dirtyFlag(result);

            return result;
        }
    }
};

然后,在构建脏物品清单时,您需要检查它,如果这是您需要的物品。

示例:http://jsfiddle.net/rniemeyer/7DGfs/