Vee-validate - [Vue warn]:无法解析指令:验证

use*_*474 3 vue.js vue-component vuejs2 vee-validate vue-directives

我想验证文本字段,尝试下面的代码:

 <input v-validate="result.val=='Required' ? 'required' : ''" v-model="required" :name="f_name" type="text"/>
Run Code Online (Sandbox Code Playgroud)

但出现此错误:

app.js:48089 [Vue warn]: 无法解析指令:验证

尝试这个:

<ValidationProvider name="phone" :rules="required" v-slot="{ errors }">
  <input class="form-control" :name="phone" type="text" v-model="form.phone"/>
  </ValidationProvider>
Run Code Online (Sandbox Code Playgroud)

Bou*_*him 7

根据迁移指南,该指令在 v3.x 中被删除:

具有该v-validate指令的字段现在需要由组件包装ValidationProvider,并且它们需要使用 v-model 来正确标记自己以进行 vee-validate。所以这:

<input type="text" name="field" v-validate="'required'">
<span>{{ errors.first('field') }}</span>
Run Code Online (Sandbox Code Playgroud)

将被重写为:

<ValidationProvider name="field" rules="required" v-slot="{ errors }">
  <input type="text" v-model="value">
  <span>{{ errors[0] }}</span>
</ValidationProvider>
Run Code Online (Sandbox Code Playgroud)

你的代码应该是这样的:

<ValidationProvider name="f_name" :rules="result.val=='Required' ? 'required' : ''" v-slot="{ errors }">
<input v-model="required" :name="f_name" type="text"/>
</ValidationProvider>
Run Code Online (Sandbox Code Playgroud)

您应该将其添加到main.js

import { ValidationProvider } from 'vee-validate';

Vue.component('ValidationProvider', ValidationProvider);
Run Code Online (Sandbox Code Playgroud)

如果您不使用捆绑程序并在浏览器中或从 CDN 使用 vee-validate:

<script>
  // ...
  Vue.component('validation-provider', VeeValidate.ValidationProvider);
  // ...
</script>

Run Code Online (Sandbox Code Playgroud)