【问题标题】:Vee-validate - [Vue warn]: Failed to resolve directive: validateVee-validate - [Vue 警告]:无法解析指令:验证
【发布时间】:2020-12-04 12:17:03
【问题描述】:

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

 <input v-validate="result.val=='Required' ? 'required' : ''" v-model="required" :name="f_name" type="text"/>

但收到此错误:

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

试试这个:

<ValidationProvider name="phone" :rules="required" v-slot="{ errors }">
  <input class="form-control" :name="phone" type="text" v-model="form.phone"/>
  </ValidationProvider>

【问题讨论】:

  • 你在使用 vee-validate 吗?如果是,请提供其版本
  • @BoussadjraBrahim: vee-validate 版本 "vee-validate": "^3.3.9",

标签: vue.js vuejs2 vue-component vee-validate vue-directives


【解决方案1】:

根据migration guide,此指令在 v3.x 中被删除:

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

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

将重写为:

<ValidationProvider name="field" rules="required" v-slot="{ errors }">
  <input type="text" v-model="value">
  <span>{{ errors[0] }}</span>
</ValidationProvider>

你的代码应该是这样的:

<ValidationProvider name="f_name" :rules="result.val=='Required' ? 'required' : ''" v-slot="{ errors }">
<input v-model="required" :name="f_name" type="text"/>
</ValidationProvider>

您应该将此添加到main.js

import { ValidationProvider } from 'vee-validate';

Vue.component('ValidationProvider', ValidationProvider);

如果您没有使用捆绑器并在浏览器或 CDN 中使用 vee-validate:

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

【讨论】:

  • 谢谢,现在我收到此错误:未知的自定义元素: - 您是否正确注册了组件
  • 我收到此错误:属性或方法“字段”未在实例上定义,但在渲染期间被引用。
  • name="f_name"替换name="field"
  • 我收到错误:属性或方法“必需”未在实例上定义,但在渲染期间和错误部分 v-slot="{ errors }" 中引用
  • 我已经在我的问题中添加了我的代码 sn-p 我现在正在尝试什么
猜你喜欢
  • 2017-05-28
  • 2017-12-06
  • 2020-10-19
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 2020-02-29
  • 2017-11-01
  • 2018-12-30
相关资源
最近更新 更多