Vue+Element-UI,表单校验多语言切换

博客作者在使用Vue和Element-UI开发项目时遇到一个问题,即表单验证的错误提示在切换语言后不会自动更新。作者发现将验证规则(rules)写在data中会导致这个问题,而改为使用计算属性可以解决这个问题。通过将rules定义为计算属性,并确保校验方法中使用当前的多语言提示,实现了语言切换时错误信息的实时更新。此外,作者还提醒注意表单绑定方式应使用:model而非v-model。
摘要由CSDN通过智能技术生成

技术栈:Vue、Element-UI、Vi18n

在做项目时,按照ElementUI官方demo写法,将validator的函数和rules写在了data里,然后发现当表单有错误提示信息时,切换语言而不清除错误提示(clearValidate),校验文字的语言并没有跟着改变,必须手动刷新才能实现想要的效果。如下图:

解决方法:

将rules写入计算属性

computed:{
    rules(){
      let checkName = (rule,value,callback)=>{//校验方法
        if(hasChinese(value)||value.length>128){
          return callback(new Error())
        }
        callback();//即使校验通过也不要忘记callback
      }
      return{//规则字段
        web_user:[{validator:checkName,trigger:'change',message:this.$t('account.hint')}]
      }
    }

  }

写在最后:

最近写表单,发现之前自己有好多细节没有注意到,也因此踩了很多坑.

比如,rules整体我都copy了官方demo,但是校验的内容就是不对,后来发现,是form的绑定方式出了错,应该用    :model="form"    ,而不是v-model

踩坑的过程很蠢,但也让我意识到,自己以前确实缺乏对细节的重视。而且也让我意识到,很多东西,不是光会用就行,遇到问题的时候,理解其中原理,才能更好的排查。

继续加油!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值