【问题标题】:Vuelidate $v is undefined in Vue componentVuelidate $v 在 Vue 组件中未定义
【发布时间】:2020-12-21 01:17:18
【问题描述】:

我没有找到任何解决此问题的方法。我收到此 Vue 组件的以下错误。我正在尝试使用 Vuelidate 库来验证我的表单。知道我在这里缺少什么吗?

Uncaught TypeError: Cannot read property '$v' of undefined




<script>
    import Vue from "vue";
    import Vuelidate from "vuelidate";
    import { required, minLength, email, sameAs } from "vuelidate/lib/validators";
    
    Vue.use(Vuelidate);
    
    const hasUpperCase = (value) =>
      value.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)/);
    export default {
      validations: {
        form: {
          Email: {
            required: required,
            isEmail: email,
          },
          ConfirmEmail: {
            required: required,
            isEmail: email,
            match: sameAs(this.$v.form.Email),
          },
        },
      },
    };
    </script>

我的 Main.js

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import vuetify from "./plugins/vuetify";
import Vuelidate from "vuelidate";
Vue.use(Vuelidate);
Vue.config.productionTip = false;

new Vue({
  router,
  store,
  vuetify,
  validations:{},
  render: (h) => h(App)
}).$mount("#app");

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component vuelidate


    【解决方案1】:

    首先,使用这个命令安装它:npm install vuelidate --save

    我建议我们通过像这样将其导入您的 src/main.js 文件中来全局定义它

    import Vuelidate from 'vuelidate';
    Vue.use(Vuelidate)
    

    完成此操作后,将您的验证器类导入您的组件:

    import { required, minLength, email, sameAs } from "vuelidate/lib/validators";
    

    一个好的做法是在编写验证之前先定义数据模型,因此您可以这样做:

    data(){
      return {
       name:"",
       email:"",
     }
    }
    

    现在您可以继续定义您的验证

    validations:{
      name::{
        required,alpha
      },
    
      email:{
        required,email
       }
    }
    
    

    您需要做的最后一件事是在您的main.js 文件中添加validations:{}

    【讨论】:

    • 我将 import 和 use 语句移动到我的 main.js 文件中,但我仍然收到错误。
    • 我的答案已经修改,请查看并告诉我
    • validations: {} 添加到您的 main.js 文件中。这应该工作
    • 您能否分享您更新后的 main.js 文件和您尝试使用验证器插件的组件的副本
    • 用 main.js 更新了我的问题
    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 2020-11-22
    • 2017-11-07
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2018-10-11
    相关资源
    最近更新 更多