0

我正在研究一个需要在客户端上使用自定义属性验证规则的项目。我正在使用微风版本 1.3.6。当我指定多个规则时,我遇到了以下问题。假设我有一个定义了 minValue(最小值 = 5)和 maxValue(最大值 = 10)自定义规则的小数字段。当我写入值 11 时,我打破了 maxValue 规则,并且 entityAspect.getValidationErrors 返回一个错误。当我删除一个字符所以值现在是 1 时,我违反了 minValue 规则。问题是 entityAspect.getValidationErrors 返回两个错误。它说 maxValue 和 minValue 规则都被破坏了。调试时,我在微风.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”为假,因为一条规则被破坏,所有剩余的规则都不会运行,因此即使不再破坏,错误也不会被清除。我希望所有验证规则都能运行以清除不再相关的错误。

4

1 回答 1

0

哎呀。这是一个错误。应该是ok = validate(...) && ok;我们会解决的。感谢您的发现和报告。

于 2013-07-03T16:01:37.013 回答