首页 文章

VueJS - Vee-Validate:自定义规则调用方法/函数来评估结果?

提问于
浏览
0

对不起,我对VueJS和它的框架仍然很新 .

我正在尝试使用vee-validate和自定义规则来检查输入字段的值,以反映对API后端的Axios GET响应 . 基本上,如果您输入了无效的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>

(我正在搞乱如何做到这一点,因此@change到实际执行Axios API调用的函数)

这是我在上面相同的* .vue文件中做出的Validate扩展规则:

<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...

validateCorpId(value)函数稍后在方法:{}块中

我一直试图通过Vee-Validate文档来了解如何正确创建自定义验证规则,但作为一个新手,很多事情似乎仍然缺失,例如,Validate.extend应该在哪里?我把它放在'script'区域或'create'或'mount'函数里面?

我确实尝试了,它立即被调用,这不是我想要的 - 我只希望它发生在用户输入或更改字段中的数据时,它调用返回true | false值的函数 .

我还在'data'返回块中添加了一个名为is_selected_owner_id_valid的字段,并将我的Axios调用设置为true | false,具体取决于结果,但由于它是布尔值,因此Validate规则立即读取并且评估错误 .

我很高兴继续为我自己工作,但是有没有人有一个完全可行的验证自定义规则,我可以看到和逆向工程?真的很难找到我正在尝试做的一个例子,将API调用作为规则的一部分 .

1 回答

相关问题