首先我有一个校验需要用到vue实例
export const rules = {
empty: [
(value) => !!value || this.$t('valid.empty'),
],
email: [
(value) => !!value || this.$t('valid.emailEmpty'),
v => /.+@.+/.test(v) || this.$t('valid.emailValid')
],
username: [
v => !!v || this.$t('valid.username')
],
password: [
v => !!v || this.$t('valid.password'),
v => v.length >= 6 || this.$t('valid.passwordLength')
]
}
但是这里面有一个I18n的国际化,this指向错误
解决,在main.js里面,把这个实例导出
/* eslint-disable no-new */
export default new Vue({
el: '#app',
router,
i18n,
store,
components: { App },
template: '<App/>'
});
然后如下
import vue from '@/main'
export const rules = {
empty: [
(value) => !!value || vue.$t('valid.empty'),
],
email: [
(value) => !!value || vue.$t('valid.emailEmpty'),
v => /.+@.+/.test(v) || vue.$t('valid.emailValid')
],
username: [
v => !!v || vue.$t('valid.username')
],
password: [
v => !!v || vue.$t('valid.password'),
v => v.length >= 6 || vue.$t('valid.passwordLength')
]
}
如果你有更好的办法请告诉我。我需要你的帮助
如果你觉得好就点个赞。