如何强制重新检查Vuelidate验证

5

我该如何强制Vuelidate重新检查验证?

我的使用场景是,我有一个表单字段,用户可以输入远程目录的名称,我有一个Vuelidate验证,它会与服务器检查该目录是否存在。

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

当目录字段被更新时,这个功能按照预期工作。然而,应用程序中的其他操作可能会影响这个目录是否存在于服务器上,因此我需要一种方法来手动强制重新运行此检查,以响应页面上的各种事件。如何在不更改“directory”字段的值的情况下强制重新运行这个"exists"检查呢?
从文档中得知,我认为调用this.$v.directory.$touch()可以做到,但似乎并不是这样。我也尝试在$touch()之前调用$reset()
我创建了这个JSFiddle,展示了我当前的不成功尝试。
1个回答

4

今天我也遇到了同样的问题。我找到的唯一解决方法有点hacky:

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

这似乎强制重新评估字段验证。我猜想在Vuelidate代码的某个地方,会检查值在验证之前是否已更改,这就是为什么我尝试过的所有$reset和$touch都没有起作用的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接