Knockout js - Dirty Flag issue



我使用Knockout Js为我的视图页面。我有一个要求,如果任何可编辑字段的变化,我必须启用保存按钮,否则不是。这工作得很好。我的问题是我有复选框也为每一行的项目。这些是viewModel中的可观察项。现在发生的事情是,当我选中或取消选中任何复选框时,Knockout将其视为Dirty item并启用我不想要的Save按钮。

我该如何解决这个问题?

我不确定您为dirty flag使用的确切代码,但如果它涉及到在dependentObservable中使用ko.toJS,那么您可以使用一个技巧让它跳过一些可观察对象。

如果你创建一个可观察对象,它是一个函数的属性,那么ko.toJS将找不到它。

这里有两个例子(someFlaganotherFlag):

function Item(id, name) {
    this.id = ko.observable(id);
    //create a sub-observable that the dirty flag won't find
    this.id.someFlag = ko.observable(false);
    this.name = ko.observable(name);
    this.dirtyFlag = new ko.dirtyFlag(this);
    //or similarly, place an observable on a plain ol' function
    this.forgetAboutMe = function() { };
    this.forgetAboutMe.anotherFlag = ko.observable(false);  
}

示例如下:http://jsfiddle.net/rniemeyer/vGU88/

最新更新