[Vue 警告]:未定义属性或方法“$v”

Posted

技术标签:

【中文标题】[Vue 警告]:未定义属性或方法“$v”【英文标题】:[Vue warn]: Property or method "$v" is not defined 【发布时间】:2021-04-20 11:41:40 【问题描述】:

我想对密码匹配进行验证,但出现以下错误:

vue.runtime.esm.js?2b0e:619 [Vue 警告]:属性或方法“$v”未在实例上定义,但在渲染期间被引用。确保 该属性是反应性的,无论是在数据选项中,还是在 基于类的组件,通过初始化属性。看: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

ma​​in.js

import Vue from 'vue';
import Vuelidate from 'vuelidate';
import VueTheMask from 'vue-the-mask';

Vue.use(Vuelidate, VueTheMask);

Vue.config.productionTip = false;

new Vue(
  router,
  store,
  vuetify,
  render: h => h(App)
).$mount('#app')

我的表单

...

<form action="#" method="GET" @submit.prevent="pswResetHendler">
    <label class="input__label" for="psw">Yangi parolni kiriting</label>
    <input
        class="input input__psw"
        type="password"
        name="psw"
        required
        v-model="password"
        :class=" 'is-invalid': $v.password.$error "
    />
    <label class="input__label" for="psw">Yangi parolni qayta kiriting</label>
    <input
        class="input input__psw"
        type="password"
        name="psw"
        v-model="confirmPassword"
        :class=" 'is-invalid': $v.confirmPassword.$error "
    />
    <span
        class="input__error match-error"
        v-if="!$v.confirmPassword.sameAsPassword"
        >Kiritilgan parollar bir xil bo’lishi lozim, Qayta urinib ko’ring!</span
    >
    <button class="login-btn" type="submit">KIRISH</button>
</form>
 ...

<script>
import  sameAs  from "vuelidate/lib/validators";
export default 
    name: "password-reset",
    data() 
        return 
            password: "",
            confirmPassword: "",
        ;
    ,
    methods: 
        pswResetHendler() 
            this.$v.$touch();
            if (this.$v.$invalid) 
                return;
            
            this.$router.push("/");
        ,
    ,
    validation: 
        confirmPassword:  sameAsPassword: sameAs("password") ,
    ,
;
</script>

请帮帮我,我一天都解决不了这个问题((((

【问题讨论】:

【参考方案1】:

我真的很抱歉,伙计们) 我写错了属性validations。我写了

 validation: 
        confirmPassword:  sameAsPassword: sameAs("password") ,
 ,

我不得不写而不是这个

 validations: 
        confirmPassword:  sameAsPassword: sameAs("password") ,
 ,

【讨论】:

【参考方案2】:
import Vue from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate);  

在 main.js 或组件级别导入

【讨论】:

【参考方案3】:

替换下面的行

Vue.use(Vuelidate, VueTheMask);

通过

Vue.use(Vuelidate);
Vue.use(VueTheMask);

更多信息请查看article

【讨论】:

好的,无论如何都要应用这个更改!!!你仍然遇到同样的错误吗? 请检查文章的最后几块,他们会使用 mixins 实现相同的功能 我改变了,但我得到了同样的结果( 好吧兄弟,我试试 mixins 如果有效,请不要忘记给老兄点赞:)

以上是关于[Vue 警告]:未定义属性或方法“$v”的主要内容,如果未能解决你的问题,请参考以下文章

[Vue 警告]:属性或方法未在实例上定义,但在渲染期间引用

[Vue 警告]:v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'mutate'”

[Vue 警告]:v-on 处理程序中的错误:“TypeError:无法读取未定义的属性 'fire'”

Vue 警告我无法在未定义、null 或原始值上设置反应属性:null

带有 v-for 的 Vue 内联模板 - 未定义

控制台错误:[Vue 警告]:属性或方法未在实例上定义,但在渲染期间引用