我有一个VM,它有多个表单并且都有验证。为了支持多种形式,我认为我必须实现敲除可选验证。
我的表格中有很多验证。与maxLength
,minlength
,required
和一次自定义验证一样。
验证看起来像这样
@password = ko.observable("").extend({ required: true, minLength: 5})
@current_password = ko.observable().extend({
validation: { validator: @mustEqual, message: 'Passwords do not match.', params: @password }
})
现在,要使用isLoggedIn
使上述验证可选,请使用此
@password = ko.observable().extend
required:
onlyIf: () =>
!@isLoggedIn()
但它仅适用于required
。我也想要minLength
和custom validator
。怎么做?
答案 0 :(得分:3)
onlyIf可以与所有验证器一起使用,比如这个(小提琴,分叉来自github示例:http://jsfiddle.net/LYP5u/25/):
self.testField = ko.observable(5).extend({
max:{
onlyIf:function() { return self.country() === 'US'},
params:5
}
});
验证来源示例:https://github.com/Knockout-Contrib/Knockout-Validation/blob/master/Src/api.js#L225
也许我们应该和其中一位维护人员讨论,以便在手册中更清楚地说明这一点,或许只添加一些例子,只有这一页https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules