我正在进行预测,我需要在客户端上使用自定义属性验证规则。我使用的是微风版1.3.6。当我指定多个规则时,我遇到了以下问题。让我们说我有一个小数字段,其中定义了minValue(最小值= 5)和maxValue(最大值= 10)自定义规则。当我写入值11时,我正在破坏maxValue规则并且entityAspect.getValidationErrors返回一个错误。当我删除一个字符,所以值现在为1我打破了minValue规则。问题是entityAspect.getValidationErrors返回两个错误。它说maxValue和minValue规则都被破坏了。 在调试时,我在breeze.debug.js版本1.3.6第3639行中找到了一个函数:
// called from defaultInterceptor.
proto._validateProperty = function (value, context) {
var ok = true;
this._processValidationOpAndPublish(function (that) {
context.property.validators.forEach(function (validator) {
ok = ok && validate(that, validator, value, context);
});
});
return ok;
};
从我可以解决的问题来看,它应该通过所有验证规则。问题是它在达到破坏规则后停止调用validate:
ok = ok && validate(that, validator, value, context);
一旦'ok'为false,因为一条规则被破坏,所有剩余的规则都不会运行,所以即使不再被破坏,错误也不会被清除。我希望运行所有验证规则来清除不再相关的错误。
答案 0 :(得分:0)
糟糕。那是一个错误。应该是ok = validate(...) && ok;
我们会解决它。感谢您的查找和报道。