如何从现有的observable中删除扩展器?

时间:2013-06-15 05:15:59

标签: knockout.js knockout-validation knockout-extensions

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

myObservable.extend({required:true});

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

2 个答案:

答案 0 :(得分:38)

您可以删除所有验证相关属性,形成一个可通过ko验证添加的observable:

myObservable.extend({validatable: false});

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

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

演示JSFiddle

但是ko验证支持conditional validation,所以你可以在验证工作时指定一些条件,所以这可能是你需要的:

myObservable.extend({
    required: {
        message: "Some message",
        onlyIf: function () { return //some condition; }
    }
});

答案 1 :(得分:2)

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

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

演示:JSFiddle