breeze客户端验证不会清除错误

时间:2013-07-03 07:52:53

标签: breeze client-side-validation

我正在进行预测,我需要在客户端上使用自定义属性验证规则。我使用的是微风版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,因为一条规则被破坏,所有剩余的规则都不会运行,所以即使不再被破坏,错误也不会被清除。我希望运行所有验证规则来清除不再相关的错误。

1 个答案:

答案 0 :(得分:0)

糟糕。那是一个错误。应该是ok = validate(...) && ok;我们会解决它。感谢您的查找和报道。