Tim*_*lay 5 javascript vue.js vuelidate
如何强制 Vuelidate 重新检查验证?
我的用例是,我有一个表单字段,用户可以在其中输入远程目录的名称,并且我有一个 Vuelidate 验证,它会检查服务器是否存在该目录
validations: {
directory: {
exists(value) {
return checkExistsOnServer(value).then(result => result.directoryExists)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当目录字段更新时,这将按预期工作。但是,应用程序中的其他操作可能会影响该目录是否存在于服务器上,因此我需要一种方法能够手动强制重新运行此检查以响应页面上的各种事件。如何exists在不更改字段值的情况下强制重新运行此检查directory?
从文档中,我认为调用this.$v.directory.$touch()可以做到这一点,但似乎并非如此。我$reset()之前也尝试过打电话$touch()。
我创建了这个JSFiddle显示我当前不成功的尝试。
小智 4
我今天偶然发现了同样的问题。我发现让它工作的唯一方法有点hacky:
const directoryValue = this.$v.directory.$model;
this.$v.directory.$model = null;
this.$v.directory.$model = directoryValue;
Run Code Online (Sandbox Code Playgroud)
这似乎迫使重新评估现场验证。我猜测 Vuelidate 代码中的某个地方有一些东西可以在验证之前检查值是否已更改,这就是为什么我尝试过的所有方法都$reset不起作用$touch。