Vuejs2 VueJS-Vee验证:调用方法/函数以评估结果的自定义规则?
抱歉,我对VueJS及其框架还是很陌生 我正在尝试使用vee validate和自定义规则来检查输入字段的值与Axios GET对API后端的响应。本质上,如果您输入一个无效的ID,它将抛出一个错误,直到您把它弄对为止(即:为一个有效的员工分配一张票证,您必须输入一个有效的员工ID) 我的模板代码现在看起来像这样: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
<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调用放入自定义规则本身有多正确。我喜欢你提供的例子,并将复古适合。非常感谢。