vue.js 如何强制重新检查验证确认

wkyowqbh  于 2023-02-09  发布在  Vue.js
关注(0)|答案(1)|浏览(138)

如何强制Vuelidate重新检查验证?
我的用例是,我有一个表单字段,用户可以在其中输入远程目录的名称,我有一个Vuelidate验证,它检查服务器是否存在该目录

validations: {
  directory: {
    exists(value) {
      return checkExistsOnServer(value).then(result => result.directoryExists)
    }
  }
}

当目录字段更新时,此操作按预期工作。但是,应用中的其他操作可能会影响服务器上是否存在此目录,因此我需要一种方法,能够手动强制重新运行此检查以响应页面上的各种事件。如何在不更改directory字段值的情况下强制重新运行此exists检查?
从文档中,我认为调用this.$v.directory.$touch()可以做到这一点,但似乎没有。我还尝试在调用$touch()之前调用$reset()
我创建了这个JSFiddle,显示了我当前未成功的尝试。

b0zn9rqh

b0zn9rqh1#

今天我也遇到了同样的问题。我发现的唯一解决方法有点古怪:

const directoryValue = this.$v.directory.$model;
this.$v.directory.$model = null;
this.$v.directory.$model = directoryValue;

这似乎迫使字段验证的重新评估。我猜在Vuelidate代码的某个地方有一些东西在验证之前检查值是否已经更改,这就是为什么我尝试过的所有$reset$touch都不起作用。

相关问题