Element-UI中关于table表格的那些骚操作(小结)


Posted in Javascript onAugust 15, 2019

最近的项目中使用到element-ui组件库,由于做的是后台管理系统,所以经常需要操作表格,编辑样式的过程中遇到一些问题,官网针对table给出了很多的api,自己可以自定义,基本能满足产品需求,但是没有给出具体的案例,网上的资料也比较简略,这里简单整理下一些常用的操作,如果有类似的功能可以做一个参考。

具体的使用方法还是建议仔细阅读官网-table章节:

https://element.eleme.cn/#/zh-CN/component/table#table-column-scoped-slot

该项目demo已上传github,欢迎大家下载:

# 克隆到本地
git clone git@github.com:Hanxueqing/Element-table.git

# 安装依赖
npm install

# 开启本地服务器localhost
npm run dev

项目地址:

https://github.com/Hanxueqing/Element-table

自定义列的内容

需求:在表格最后一栏添加操作按钮

Element-UI中关于table表格的那些骚操作(小结)

通过slot-scope="scope"添加操作按钮,这是专门为我们提供的插槽,方便自定义添加不同的内容。

<template slot-scope="scope">
    <el-button size="mini" type="primary">编辑</el-button>
    <el-button size="mini" type="danger">删除</el-button>
   </template>
   </el-table-column>

Element-UI中关于table表格的那些骚操作(小结) 

scope.$index 获取当前行下标

添加进来的操作按钮可以通过scope.$index可以获取当前行对应的下标

<el-table-column label="操作" width="160">
   <template slot-scope="scope">
    <el-button size="mini" type="primary" plain @click = "showIndex(scope.$index)">点击显示当前行下标</el-button>
   </template>
   </el-table-column>

根据下标可以对指定某一行进行操作

Element-UI中关于table表格的那些骚操作(小结)

scope.row 获取当前属性值

通过scope.row.属性名可以获取当前行对应的属性值

<el-table-column label="操作" width="160">
   <template slot-scope="scope">
    <el-button size="mini" type="primary" plain @click = "showName(scope.row.name)">点击获取姓名属性</el-button>
   </template>
   </el-table-column>

点击按钮获得当前行的name属性值

Element-UI中关于table表格的那些骚操作(小结)

可以通过scope.row.属性名和三目运算符给特殊的属性值设定样式

<el-table-column prop="name" :label="langConfig.table.name[lang]" width="200">
   <template slot-scope="scope">
    <div :class="scope.row.name === '王大虎' ? 'specialColor':''">{{scope.row.name}}</div>
   </template>
   </el-table-column>

编写specialColor样式,将字体颜色设置为红色

.specialColor{
 color:red;
 }

设置表头样式

需求:将表头样式改为背景色蓝色,字体颜色白色,字重400

Element-UI中关于table表格的那些骚操作(小结)

header-cell-class-name

说明:表头单元格的 className 的回调方法,也可以使用字符串为所有表头单元格设置一个固定的 className。

类型:Function({row, column, rowIndex, columnIndex})/String

函数形式:将headerStyle方法传递给header-cell-class-name

<el-table 
   :data="tableData[lang]" 
   class="table" 
   stripe 
   border 
   :header-cell-class-name="headerStyle"
  >

编写headerStyle,返回class名称tableStyle

headerStyle ({row, column, rowIndex, columnIndex}) {
  return 'tableStyle'
  }

在style中编写tableStyle样式

<style lang = "scss">
 .tableStyle{
 background-color: #1989fa!important;
 color:#fff;
 font-weight:400;
 }
</style>

字符串形式:直接将tableStyle名称赋值给header-cell-class-name

<el-table 
   :data="tableData[lang]" 
   class="table" 
   stripe 
   border 
   header-cell-class-name="tableStyle"
  >

header-cell-style

说明:表头单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style。

类型:Function({row, column, rowIndex, columnIndex})/Object

函数形式:将tableHeaderStyle方法传递给header-cell-style

<el-table 
   :data="tableData[lang]" 
   class="table" 
   stripe 
   border 
   :header-cell-style='tableHeaderStyle'
  >

编写tableHeaderStyle方法,返回样式

tableHeaderStyle ({row, column, rowIndex, columnIndex}) {
  return 'background-color:#1989fa;color:#fff;font-weight:400;'
  }

对象形式:直接在对象中编写样式

<el-table 
   :data="tableData[lang]" 
   class="table" 
   stripe 
   border 
   :header-cell-style="{
   'background-color': '#1989fa',
   'color': '#fff',
   'font-weight': '400'
  }">

header-row-class-name

说明:表头行的className 的回调方法,也可以使用字符串为所有表头行设置一个固定的 className。

类型:Function({row, rowIndex})/String

使用方式与header-cell-class-name类似

注意:header-row-class-name与header-cell-class-name的区别:

header-row-class-name是添加在tr上面的,header-cell-class-name是添加在th上面的。

header-row-class-name:

Element-UI中关于table表格的那些骚操作(小结)

所以想让添加在tr上的样式显示,需要关闭element-ui中原本的th的样式,否则会被覆盖!(例如背景色)

Element-UI中关于table表格的那些骚操作(小结)

header-cell-class-name:

Element-UI中关于table表格的那些骚操作(小结)

header-row-style

说明:表头行的 style 的回调方法,也可以使用一个固定的 Object 为所有表头行设置一样的 Style。

类型:Function({row, rowIndex})/Object

使用方式与header-cell-style类似

设置行样式

需求:将表格中行的背景色设置为浅蓝色

Element-UI中关于table表格的那些骚操作(小结)

row-class-name

说明:行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。

类型:Function({row, rowIndex})/String

使用方式与header-cell-class-name类似

row-style

说明:行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。

类型:Function({row, rowIndex})/Object

使用方式与header-cell-style类似

函数形式:将tableRowStyle方法传给row-style

<el-table 
   :data="tableData[lang]" 
   class="table" 
   border 
   :row-style="tableRowStyle"
  >

编写tableRowStyle方法,返回样式

// 修改table tr行的背景色
  tableRowStyle ({ row, rowIndex }) {
  return 'background-color:#ecf5ff'
  }

点击按钮操作当前行

需求:点击操作栏的按钮,切换按钮状态,并且将当前行置灰

Element-UI中关于table表格的那些骚操作(小结)

通过slot-scope添加按钮

<el-table-column label="操作" width="160">
   <template slot-scope="scope">
    <el-button size="mini" type="danger" plain v-if = "scope.row.buttonVisible" @click = "changeTable(scope.row.buttonVisible,scope.$index)">禁用该行</el-button>
    <el-button size="mini" type="primary" plain v-else @click = "changeTable(scope.row.buttonVisible,scope.$index)">启用该行</el-button>
   </template>
   </el-table-column>

在每一个data中添加buttonVisible字段,使用v-if/v-else指令实现按钮的显示与隐藏

{
   date: '2016-05-10',
   name: '王大虎',
   address: '上海市普陀区金沙江路 1518 弄',
   zip: 200333,
   buttonVisible: true
  }

编写changeTable方法,点击按钮的时候更改buttonVisible的值

changeTable (buttonVisible, index) {
  this.tableData[index].buttonVisible = !buttonVisible
  }

给el-table添加row-style,并且将tableRowStyle方法传递给row-style

<el-table 
   :data="tableData" 
   class="table" 
   border 
   :row-style="tableRowStyle"
  >

编写tableRowStyle方法,根据每一行buttonVisible的值设置背景色

// 修改table tr行的背景色
  tableRowStyle ({ row, rowIndex }) {
  if (this.tableData[rowIndex].buttonVisible === false) {
   return 'background-color: rgba(243,243,243,1)'
  }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
基于Jquery的开发个代阴影的对话框效果代码
Jul 28 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
小结Node.js中非阻塞IO和事件循环
Sep 18 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
IE和Firefox之间在JavaScript语法上的差异
Apr 22 Javascript
javascript实现滚动效果的数字时钟实例
Jul 21 Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
JS实现碰撞检测的方法分析
Jan 19 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 #Javascript
js设计模式之单例模式原理与用法详解
Aug 15 #Javascript
js设计模式之代理模式及订阅发布模式实例详解
Aug 15 #Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 #Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 #Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 #Javascript
vue的keep-alive用法技巧
Aug 15 #Javascript
You might like
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php微信开发之关注事件
2018/06/14 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python matplotlib画图实例代码分享
2017/12/27 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
python文件编写好后如何实践
2020/07/07 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
25岁生日感言
2014/01/13 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
学生会主席演讲稿
2014/04/25 职场文书
社区工作者演讲稿
2014/05/23 职场文书
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
vue里使用create, mounted调用方法
2022/04/26 Vue.js