如何使用vee-validation在vuejs中本地化erorr消息

时间:2018-05-03 07:06:15

标签: vue.js vuejs2 vee-validate

  

以下是我的代码。实际上我想要本地化一些消息   和属性名称使用vee-validation。我能够本地化   仅在使用E.g时发出的消息:this。$ validator.localize('en',{   消息:{required:(field)=> '*'+ field + required'},   属性:{email:'Email'}});在“created()”函数内。但   我想在“main.js”中给出这个。每当我打电话给这个   在main.js中它抛出错误,如“Uncaught TypeError:不能   读取属性'localize'未定义“我的代码在main.js.我已经给出了这个   main.js中的代码,因为我想通过我的项目访问   在所有vue文件中。请帮忙

import Vue from 'vue'
import App from './App'
import router from './router'
import VeeValidate from 'vee-validate';
import { Validator } from 'vee-validate';

Vue.use(VeeValidate);

this.$validator.localize('en', {
      messages: {
        required: (field) => '* ' + field + ' is required'
      },
      attributes: {
        email: 'Email'
      } 
    });

new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: {
    App
  }
})

2 个答案:

答案 0 :(得分:0)

在你的代码示例中,this.$validator在不知名的地方被调用...你需要把它放在你的Vue实例中,例如在挂钩中:

new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: {
    App
  },
  mounted() {
    this.$validator.localize('en', {
      messages: {
        required: (field) => '* ' + field + ' is required'
      },
      attributes: {
        email: 'Email'
      } 
    })
  }
})

答案 1 :(得分:0)

如果要更改所有默认消息,请包括一些属性更改。             定义您的消息,然后将其安装在主js文件中

         const dict = {
            messages: {
                required: (field) => 'Please Enter ' + field + ''
            },
            attributes: {
                name: 'Name',
                email: 'Email Id '
            }
        }
        const app = new Vue({
            el: '#app',
            router: router,
            components: {
                App
            },
            mounted() {
                this.$validator.localize('en', dict);
            }
        });

  //  Make to change in single required message
    const dict = {
        custom: {
            email: {
                required: 'Please Enter Valid Email Id'
            },
            name: {
                required: 'Name include first and last name'
            }
        }
    }
    const app = new Vue({
        el: '#app',
        router: router,
        components: {
            App
        },
        mounted() {
            this.$validator.localize('en', dict);
        }
    });