首页 > 其他 > 详细

Element-ui表单验证(二)

时间:2020-06-04 14:44:17      阅读:49      评论:0      收藏:0      [点我收藏+]

业务场景

  • 新增一个字段,该字段对应多个输入框,该字段属性动态获取,对该字段进行动态校验

解决措施

  • data中定义,发送请求,为该字段进行属性初始化
return {
      language: this.$store.getters.language,
      loading: false, // 加载动画
      info: {
        // 基本信息
        name: ‘‘, // 系统接口名称
        languageInterfaceName: {}, // 接口名称中英文 (需)
        ...     
    },
};

  created() {
    this.getLanguageType();
  },
  getLanguageType() {
      getLang(‘‘) // 获取多语言
      .then(response => {
        const obj = {};
        response.data.list.forEach(val => {
          const prop = val.language; // en
          obj[prop] = ‘‘;
        });
        this.info.languageInterfaceName = obj;
      })
      .catch(error => {
        console.log(error);
      });
    }
  • 定义结构
<!-- 多语言接口名称 -->
<el-form-item :label="‘多语言接口名:‘+key"
    v-for="(value, key, index) in this.info.languageInterfaceName"
    :key="index" :prop="`languageInterfaceName.${key}`" :rules="rules.language1">
    <el-input class="MW300" v-model="info.languageInterfaceName[key]" placeholder="请输入"></el-input>
</el-form-item>
  • 自定义校验
rules: {
    language1: [
      { required: true, message: ‘不能为空‘, trigger: ‘blur‘ }
    ]
}

效果

技术分享图片

踩坑

  • 直接暴力修改属性,导致数据绑定不上

  即写 getLanguageType() 方法时,直接使用 this.info.languageInterfaceName[key] 方式 给其增加属性,导致vue绑定不上

  • 不懂 prop 跟 rules
    • prop:form里面的校验只能校验到form绑定的值的第一层,即假如,form上写的为 :model="info",只能绑定到 info.xxxx,诸如上述的 info.xxx.yy这种需要进行自定义
    • :prop="‘languageInterfaceName.‘+key"(与上述方式一样,相当于简化了字符串拼接操作)
    • rules:如果是自定义的校验,需要rules精确指定具体的检验,比如将language1写在rules下,就要写成 :rules = “rules.language1”

Element-ui表单验证(二)

原文:https://www.cnblogs.com/superhonors/p/13042363.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!