2

我正在使用 Vue,并使用Vuelidate进行验证。

当使用执行 AJAX 调用的自定义验证器时,它会在页面加载时多次触发,甚至在用户交互之前(vuelidate's $touch)。

在首次加载这些多次调用后,验证工作正常。(我使用 vue 对输入更改使用此验证@change

我尝试设置一个标志isMounted以仅在加载整个实例后才在自定义验证器中执行验证,但没有成功。

代码

验证器(仅用于调试,用于测试):

validations() {
    return {
        myFieldToValidate(field) {
            test_validation(value) {
                console.log('test validation fired!', Math.random());
                return true;
            }
        }
    }
}

然后,当我重新加载页面时,它会触发多次:

多次通话

我想让验证“触发”仅基于我的事件(输入更改),而不是在页面加载时多次。如何做到这一点?

4

2 回答 2

0

@change.once应该做的伎俩

有关更多信息,请参阅链接 https://vuejs.org/v2/api/#vm-once

于 2019-02-04T02:15:51.140 回答
0

我结束了制作自己的函数来进行 ajax 调用,与vuelidate. 我使用lodash' _.debounce来控制调用。

我将函数绑定到@input事件,ajax基于它进行调用并返回带有结果的“标志”属性。

然后,我使用这个标志来检查字段的有效性。

使用此 abordage,该事件不会在页面加载时多次触发。

于 2019-02-05T11:03:06.553 回答