【发布时间】:2014-03-17 23:57:43
【问题描述】:
我正在使用来自here 的areSame 规则:
ko.validation.rules['areSame'] = {
getValue: function (o) {
return (typeof o === 'function' ? o() : o);
},
validator: function (val, otherField) {
return val === this.getValue(otherField);
},
message: 'The fields must have the same value'
};
并像这样应用它:
this.confirm = ko.observable().extend({
areSame: {
params:this.password
}
});
但它甚至从未被触发。我将调试器放入规则定义的validator 函数中:
验证器:函数(val,otherField){
调试器
返回 val === this.getValue(otherField);
},
但是流程从未访问过这一点。有什么问题?
编辑:
调用ko.validation.registerExtenders();解决了不触发验证的问题,但是规则没有按预期工作。问题是传递给validator 的otherField 变量是对象
{params:*observable here*},其中 getValue 方法并不期望如您从源代码中看到的那样。所以要么源代码错误,要么我以错误的方式定义了规则的参数。那么是哪一个?
【问题讨论】:
-
您是否致电
ko.validation.registerExtenders()注册您的自定义规则? -
不,我没有这样做,因为我不知道我需要这样做:)。请将其作为答案发布,就像我这样做时触发了验证一样
标签: knockout.js knockout-validation