首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vee Vee JS属性或方法“必需”不在实例上定义,而是在呈现过程中引用。

Vee Vee JS属性或方法“必需”不在实例上定义,而是在呈现过程中引用。
EN

Stack Overflow用户
提问于 2021-07-07 07:24:34
回答 1查看 608关注 0票数 1

我是Vue和Nuxt的新手,我似乎无法克服这个错误:

Vue警告:属性或方法“必需”不在实例上定义,而是在呈现过程中引用

这是源代码:

vee-valdate.js:

代码语言:javascript
复制
import Vue from 'vue'
import {ValidationProvider, ValidationObserver,extend} from 'vee-validate'
import {required,email} from 'vee-validate/dist/rules'
Vue.component('ValidationProvider',ValidationProvider)
Vue.component('ValidationObserver',ValidationObserver)

extend('required' ,{
    ...required,
    message:'This field is required'
})


extend('email',{
    ...email,
     message:'This field is required'

})

至于表格:

代码语言:javascript
复制
<template>
  <div>
    <div class="col-6 pr-2">
      <label for="name">*Name </label> <br />
      <ValidationObserver>
        <ValidationProvider v-slot="{ errors }" mode="passive" rules="required">
          <input id="name" v-model="required" type="text" name="name" placeholder="Your name" />
          <span class="validation-span">{{ errors[0] }}</span>
        </ValidationProvider>
      </ValidationObserver>
    </div>
    <div class="col-6 pr-2">
      <label for="company">Company</label> <br />
      <input id="company" type="text" label="Company" placeholder="Name of your company" />
      <br />
    </div>
    <div class="col-6 pr-2">
      <br />
      <ValidationObserver>
        <ValidationProvider v-slot="{ errors }" mode="passive" rules="required|email">
          <label for="email">*Email</label> <br />
          <input id="email" v-model="email" type="email" placeholder="example@email.com" /> <br />
          <span class="validation-span">{{ errors[0] }}</span>
        </ValidationProvider>
      </ValidationObserver>
    </div>
  </div>
</template>
EN

回答 1

Stack Overflow用户

发布于 2021-07-07 08:46:54

我的团队就是这样做的。

/utils/vee-validate-rules.js

代码语言:javascript
复制
import { extend } from 'vee-validate'
import { email as defaultEmail, required as defaultRequired } from 'vee-validate/dist/rules'

const email = extend('email', {
  ...defaultEmail,
})

const required = extend('required', {
  ...defaultRequired,
})


export { extend, email, required }

一些.vue文件

代码语言:javascript
复制
<script>
import { extend, required, email } from '~/utils/vee-validate-rules'

export default {
  beforeCreate() {
    extend('required', { ...required, message: this.$t('veeValidate.required') })
    extend('email', { ...email, message: this.$t('veeValidate.email') })
  },
}
</script>

到目前为止效果很好。在i18n方面可以做得更好。

而且,别忘了把它也转过来

nuxt.config.js

代码语言:javascript
复制
build: {
  transpile: ['vee-validate/dist/rules']
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68281722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档