我在我的视图页面使用Knockout Js。我有一个要求,如果任何可编辑字段更改,我必须启用保存按钮否则。这很好用。 我的问题是我的每一行都有复选框。这些是我的viewModel中的可观察项。现在发生的事情是当我选中或取消选中任何复选框时,Knockout将其视为Dirty item并启用我不想要的Save按钮。
我该如何解决这个问题?
答案 0 :(得分:6)
我不确定你用于脏标志的确切代码,但如果它涉及在this之类的dependentObservable中使用ko.toJS
,那么有一个技巧可以用来让它跳过一些可观察的。
如果您创建一个属于函数属性的observable,则ko.toJS
将无法找到它。
以下是两个示例(someFlag
和anotherFlag
):
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);
}