栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

element 表格组件自适应 思路

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

element 表格组件自适应 思路

项目涉及大量表格 很多时候会采用估算和手动调试的方式来设置 column 宽度不太恰当,所以尝试实现自适应。 核心是对数据层进行修改,代码提供参考。
 let column = [
     {label:"用户id",prop:"userId"},
     {label:"用户姓名",prop:"userName"},
     {label:"创建日期",prop:"createData"},
 ]
 let data = [
     {
  userId:1,
  userName:"张三",
  createData:'2020-05-26 12:10:56'
     },
     {
  userId:2,
  userName:"李狗蛋",
  createData:'2020-05-26 12:10:56'
     }
 ]
 let resolveColumn = _cmptWidth(column,data) 
 console.log(resolveColumn)
 // [
 //   {label:"用户id",prop:"userId",width:"120px"},
 //   {label:"用户姓名",prop:"userName",width:"120px"},
 //   {label:"创建日期",prop:"createData",width:"120px"},
 // ]
 _cmptWidth(min=30,column,data){
     // 字段长度容器
     let temp={};

     // 根据第一行数据 初始化 字段长度容器
     Object.keys(data[0]).forEach(key=>{
  temp[key]=[]
     })

     // 将每一行数据的 字段长度 存入 字段长度容器 中文算做2个字符,英文1个
     data.map(i=>{
  Object.keys(i).forEach(key=>{
      let str = i[key] && i[key].toString();
      let cn = str && str.match(/[u4e00-u9fa5]/g)&&str.match(/[u4e00-u9fa5]/g).length||0
      let en = str && str.match(/[A-Za-z0-9]/g)&&str.match(/[A-Za-z0-9]/g).length||0
      let len =Math.max( en + cn*2 + ,10) ;
      temp[key].push(Math.min(len,min))
  })
     })

     // 返回 添加列宽度属性的 column
     return column.map(i=>{
  let width = Math.ceil(temp[i.prop].reduce((a,b)=>a+b)/rows.length)
  return {
      ...i,
      width:width*12+'px'
  }
     })
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/240170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号