【发布时间】:2012-11-04 04:52:09
【问题描述】:
我有对项目进行验证的 ko.observableArrays。用户可以将项目标记为已删除。当它被标记为已删除时,我需要禁用对该项目的验证。
如何动态禁用验证?
示例:http://jsfiddle.net/3RZjT/2/
<div data-bind="foreach: names">
<input data-bind="value: name, valueUpdate: 'afterkeydown'" /> <a data-bind="click: deleteMe, text:deleted()?'undelete':'delete'" href="#">delete</a><br/>
</div>
function Person(name){
var self = this;
self.name = ko.observable(name).extend({ required: true});
self.deleted = ko.observable(false);
self.deleteMe = function(){
self.deleted(!self.deleted());
self.deleted.extend({ validatable: !self.deleted()});
};
}
var viewModel = {
names: ko.observableArray([new Person("Ken"), new Person("")])
};
ko.applyBindings(viewModel);
【问题讨论】:
-
请包含您当前的代码。
-
我真的没有尝试过,因为我不知道该尝试什么。我已经使用@Anders 答案更新了一个示例,但它对我不起作用。
-
你应该在你的
deleteMe函数中写上self.name.extend({ validatable: !self.deleted()});。 -
该死!哦当然。所以那种工作。看起来此方法将禁用验证,但不会重新启用。 jsfiddle.net/3RZjT/26
标签: knockout.js knockout-validation