2

我正在使用Ryan Niemeyer 的脏旗。他的方法的一个例子可以在这个jsFiddle中看到。

他在 ViewModel 上有一个dirtyItems 方法

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

但是,我似乎无法让他的dirtyItems 方法处理我的数据。最大的不同是我使用的是映射插件。我尝试过的一切都是空的。

这是我的实现的jsFiddle

4

1 回答 1

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/

于 2013-03-12T21:42:58.643 回答