Vuejs2 VueJS-Vee验证:调用方法/函数以评估结果的自定义规则?

Vuejs2 VueJS-Vee验证:调用方法/函数以评估结果的自定义规则?,vuejs2,vee-validate,Vuejs2,Vee Validate,抱歉,我对VueJS及其框架还是很陌生 我正在尝试使用vee validate和自定义规则来检查输入字段的值与Axios GET对API后端的响应。本质上,如果您输入一个无效的ID,它将抛出一个错误,直到您把它弄对为止(即:为一个有效的员工分配一张票证,您必须输入一个有效的员工ID) 我的模板代码现在看起来像这样: <b-col cols="4"> <b-input-group> <b-input-group-text

抱歉,我对VueJS及其框架还是很陌生

我正在尝试使用vee validate和自定义规则来检查输入字段的值与Axios GET对API后端的响应。本质上,如果您输入一个无效的ID,它将抛出一个错误,直到您把它弄对为止(即:为一个有效的员工分配一张票证,您必须输入一个有效的员工ID)

我的模板代码现在看起来像这样:

     <b-col cols="4">
        <b-input-group>
          <b-input-group-text style="width:150px;" slot="prepend">Key Owner</b-input-group-text>
          <input
            class="form-control"
            v-model="selected_owner_id"
            type="text"
            id="ownerId"
            name="ownerId"
            data-vv-delay="800"
            @change="validateCorpId"
            v-validate="'ownerId|required'"
            v-bind:class="{'form-control': true, 'error': errors.has('ownerId') }"
          >
        </b-input-group>
        <span v-show="errors.has('ownerId')" class="text-danger">{{ errors.first('ownerId') }}</span>
      </b-col>

密钥所有者
{{errors.first('ownerId')}
(我正在胡思乱想如何做到这一点,因此对实际执行Axios API调用的函数进行@change)

以下是我在与上面相同的*.vue文件中制定的验证扩展规则:

<script>
import { Validator } from "vee-validate";
import VeeValidate from 'vee-validate'

Validator.extend('ownerId', {
  // Custom validation message
  getMessage: (field) => `The ${field} is not a valid ID.`,
  // Custom validation rule
  validate: (value) => new Promise(resolve => {        
    resolve({
        valid: value && (this.validateCorpId(value))
      });
  })
});

...etc...

从“vee validate”导入{Validator};
从“vee validate”导入vee validate
Validator.extend('ownerId'{
//自定义验证消息
getMessage:(field)=>`The${field}不是有效的ID。`,
//自定义验证规则
验证:(值)=>新承诺(解析=>{
决心({
valid:value&(this.validateCorpId(value))
});
})
});
等
validateCorpId(value)函数稍后位于methods:{}块中

我一直在尝试浏览Vee Validate文档,了解如何正确创建自定义验证规则,但作为一名新手,似乎仍缺少很多东西,比如,Validate.extend应该放在哪里?我把它放在“脚本”区域的顶部,还是放在“创建”或“装载”函数的内部

我确实试过了,但它马上就被调用了,这不是我想要的——我只希望当用户在它调用函数的字段中输入或更改数据时,它会调用返回真|假值的函数

我还将一个名为is_selected_owner_id_valid的字段添加到“data”返回块中,并根据结果将我的Axios调用设置为true | false,但由于它是一个布尔值,验证规则会立即读取它,并且计算结果不正确


我很高兴继续为自己工作,但有没有人有一个完全可以工作的自定义规则,我可以看到和反向工程?很难找到一个我正在尝试做的事情的例子,其中包括一个API调用作为规则的一部分。

我设法通过最初复制下面这个类似的帖子答案来解决我的问题:

虽然它可以工作,但我不相信在自定义规则中有实际的APi调用。但是,多亏了Walter Cejas的建议,我将把我的解决方案重新组合到该示例中,提供:


(我以为我已经看过所有的vee validate示例了……我错了!)

嗨,你看到这个示例了吗?您应该为您的api调用修改isUnique方法,并调整响应:我认为这正是我想要的。通过复制此人的示例,我确实成功地完成了我的工作:但我不确定将实际的APi调用放入自定义规则本身有多正确。我喜欢你提供的例子,并将复古适合。非常感谢。