20

我正在使用 Knockout Validation 插件并使用扩展器根据需要设置一个 observable:

myObservable.extend({required:true});

我可以在添加后删除扩展器吗?

4

2 回答 2

38

您可以从可观察对象中删除所有验证相关属性,这些属性是由 ko 验证通过调用添加的:

myObservable.extend({validatable: false});

或者,如果您只想删除所需的验证,您可以将其从rules集合中删除:

myObservable.rules.remove(function (item) {
        return item.rule == "required";
    });
}

演示JSFiddle

但是 ko 验证支持条件验证,因此您可以在验证应该工作时指定一些条件,所以也许这就是您需要的:

myObservable.extend({
    required: {
        message: "Some message",
        onlyIf: function () { return //some condition; }
    }
});
于 2013-06-15T05:50:10.597 回答
2

nemesv答案适用于一个小的错字更正 - remove(...) 调用中的函数应该返回一个布尔值(即 '==' 而不是 '='):

myObservable.rules.remove(function(item) {
  return item.rule == "required";
});

演示:JSFiddle

于 2014-12-17T22:26:20.767 回答