elementUI中Table表格问题的解决方法


Posted in Javascript onDecember 04, 2018

前言

element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染。

在开发vue框架项目时,引入element插件,使用table表格组件时,遇到了一些问题,以下列出以供参考。

1.表格样式问题:

elementUI中Table表格问题的解决方法
混乱样式.png

elementUI中Table表格问题的解决方法
正常样式.png

如上图,在当前导航表格table样式是没问题的,但当我点击别的导航去到另外的页面,然后再回到之前的导航页面,表格table的样式就会混乱,随便点击当前页面或刷新亦或拉伸页面,样式又恢复正常,很奇怪的样式问题。

打开调试之后,发现table的宽度并没有按照100%来显示,而是根据表格宽度值来计算的(我这里是640px),并且在table标签底下发现了colgroup和col标签,colgroup包裹着对应单元格数的col,并且col的宽度为80px,瞬间恍然大悟,明白640px是怎么得来的,这里一共有8个单元格,8*80就是640px了,那要怎么解决这个默认样式呢?

一、给表格添加固定宽度

<template>
<div class="table">
    <el-table :data="data" v-loading="loading" border style="width:100%;text-algin:center;" :header-cell-style="{background:'#F4F6F9'}" ref="multipleTable">
     <el-table-column prop="deviceTypeName" label="柜子类型名称" width="250" align="center" highlight-current-row="true">
     </el-table-column>
     <el-table-column prop="deviceTypeIntroduce" label="柜子类型说明" width="250" align="center"highlight-current-row="true">
     </el-table-column>
</div>
</template>
   //但是这个方法有个弊端,当显示的单元格过多时,表格下方会出现横向滚动条,数据不能一目了然,用户体验感不佳,还是宽度自适应比较好。

二、利用flex的特性

// 在项目中新建一个公共css文件,这样可以适用于所有表格table
//common.css
table,tbody,thead {
  width: 100% !important;
}
colgroup {
  position: absolute;
  width: 100% !important;
  display: flex;
}
col {
  flex: 1;
  text-align: center;
}
//在main.js中引入即可,table里面的单元格不用设置宽度属性,这里就可实现自适应。

2.table表格数据问题

table显示的数据并不是一成不变的,这里传入table的data需要有实时监控的功能,其中一个数据的改变就要及时显示,这里我用计算属性computed来进行监控。有时候后台返回的状态数据是0,1等等,我们也可以在里面进行判断渲染。

//vue文件
<template>
<div class="table">
  //这里的dataList就是computed里面的dataList
    <el-table :data="dataList" v-loading="loading" border style="width:100%;text-algin:center;" :header-cell-style="{background:'#F4F6F9'}" ref="multipleTable" >
     <el-table-column prop="deviceTypeName" label="柜子类型名称" align="center" highlight-current-row="true">
     </el-table-column>
     <el-table-column prop="deviceTypeIntroduce" label="柜子类型说明" align="center"highlight-current-row="true">
     </el-table-column>
</div>
</template>

<script>
export default {
 name: "basetable",
  data(){
   return{
    tableData:[],
    }
  },
 computed: {
  dataList() {
  //这里的 this.tableData是请求接口得到的数据
   let liArr = this.tableData;
   if(liArr .length>0){
   for (var i = 0; i < liArr.length; i++) {
    if (liArr[i].status == 0) {
     liArr[i].status = "启用";
    } else if (liArr[i].status == 1) {
     liArr[i].status = "停用";
    }
    if (liArr[i].line == 0) {
     liArr[i].line = "离线";
    } else if (liArr[i].line == 1) {
     liArr[i].line = "在线";
    }
   }
   return liArr;
  }
  }
 },
}
</script>

3.table表格的排序、筛选

//有时候需要对表格进行排序或者筛选,查看或对比需要的数据,这里就要用到sortable属性、filters属性、filter-change方法、sort-change方法。
//vue文件
<template>
<div class="table">
  // 将filter-change方法、sort-change方法放在el-table里面
    <el-table :data="dataList" v-loading="loading" border style="width:100%;text-algin:center;" :header-cell-style="{background:'#F4F6F9'}" ref="multipleTable" @filter-change="handleFilterChange" @sort-change='handleSortChange'>
 //列中设置filters属性即可开启该列的筛选,filter-multiple是否多选
    <el-table-column
      prop="status" column-key="status" label="启用状态" align="center" :filters="[{ text: '启用', value: '启用' }, { text: '停用', value: '停用' }]" filter-placement="bottom" :filter-multiple="ismultiple" >
      <template slot-scope="scope">
       <span v-if="scope.row.status=='启用' " style="color:green">{{ scope.row.status }}</span>
       <span v-else style="color: red" >{{ scope.row.status }}</span>
      </template>
     </el-table-column>
  //在列中设置sortable属性即可实现以该列为基准的排序
     <el-table-column prop="deviceTypeIntroduce" label="涨幅" sortable align="center" highlight-current-row="true">
 </el-table-column>
</el-table>
</div>
</template>

<script>
export default {
 name: "basetable",
  data(){
   return{
    tableData:[],
    ismultiple:false
    }
  },
  methods:{
   //过滤方法
   handleFilterChange(filters) {
   //从filters获取需要的参数
   },
   //排序方法
   handleSortChange(sorts){
   //从sorts获取需要的参数
    }
  }
}
   //其他table的属性和方法可根据实际情况对应地去使用,用法大多是大同小异的,可以去官网查看文档喔
</script>

今天的心得就到这儿了,希望可以帮助到有需要的小伙伴儿O(∩_∩)O

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JQuery从头学起第三讲
Jul 06 Javascript
jQuery实现鼠标经过图片预览大图效果
Apr 10 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
js中使用replace方法完成某个字符的转换
Aug 20 Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
Vue实现商品飞入购物车效果(电商项目)
Nov 26 Javascript
nginx部署多个vue项目的方法示例
Sep 06 Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 Javascript
zepto.js 实时监听输入框的方法
Dec 04 #Javascript
vue 之 css module的使用方法
Dec 04 #Javascript
Vue源码解析之数组变异的实现
Dec 04 #Javascript
小程序指纹验证的实现代码
Dec 04 #Javascript
js实现下拉框二级联动
Dec 04 #Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 #Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 #Javascript
You might like
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
codeigniter中测试通过的分页类示例
2014/04/17 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
初一英语教学反思
2014/01/11 职场文书
党员党性分析材料
2014/02/17 职场文书
元旦趣味活动方案
2014/08/22 职场文书
收费员岗位职责
2015/02/14 职场文书
学校推普周活动总结
2015/05/07 职场文书
2016年元旦主持词
2015/07/06 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书