【发布时间】:2011-11-05 03:33:26
【问题描述】:
我正在为我的视图页面使用 Knockout Js。我有一个要求,如果任何可编辑字段发生更改,我必须启用“保存”按钮,否则。这工作得很好。 我的问题是我也为每一行项目设置了复选框。这些是我的 viewModel 中的可观察项目。现在发生的情况是,当我选中或取消选中任何复选框时,Knockout 会将其视为脏项并启用我不想要的“保存”按钮。
我该如何解决这个问题?
【问题讨论】:
我正在为我的视图页面使用 Knockout Js。我有一个要求,如果任何可编辑字段发生更改,我必须启用“保存”按钮,否则。这工作得很好。 我的问题是我也为每一行项目设置了复选框。这些是我的 viewModel 中的可观察项目。现在发生的情况是,当我选中或取消选中任何复选框时,Knockout 会将其视为脏项并启用我不想要的“保存”按钮。
我该如何解决这个问题?
【问题讨论】:
我不确定您用于脏标志的确切代码,但如果它涉及在像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);
}
【讨论】: