ElementUI的Table表格添加自定义头CheckBox多选框
在ElmentUI的Table表格组件中,也许你会使用type为selection值的多选框功能,但是此时设置的label属性不生效,不能设置标题名称;有时候我们的需求就是要添加标题名称,那该如何处理呢?当然你可以对其样式做特殊处理,也可以自定义标题,本文将描述如何利用自定义标题来添加多选框和标题名称,特别是在该过程的踩过的雷和填补过的坑。
(一)需求:在Table表格中新增一列用于批量操作当前页的该列,例如:通过多选框来对批量设置该列的两种属性状态,选中时表示全部隐藏,不选中时表示全部显示,若部分隐藏、部分显示时多选框呈现第三种样式状态,一般是短横线表示。
(二)方案:利用Table表格column的header属性。
- 利用插槽进行设置,即slot="header",这样就可以在表头中自定义样式来;若不设置该属性,那么是对列内容进行设置。
- 具体的代码如下:
首先在工程目录下安装element,通过npm i element-ui -S命令安装即可;
然后在工程中引入element,在main.js文件中添加这样两条语句:
import ElementUI from 'element-ui';
Vue.use(ElementUI);
接着,我们在App.vue文件中进行测试,添加如下代码:<template><div id="app"><img src="./assets/logo.png"><el-table :data="tableData" style="width: 100%"><el-table-columnlabel="姓名"prop="name"></el-table-column><el-table-columnlabel="性别"prop="sex"></el-table-column><el-table-column align="right"><template slot="header" slot-scope="scope"><el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"@change="handleCheckAllChange">隐藏</el-checkbox></template><template slot-scope="scope"><el-checkbox v-model="scope.row.checked" @change="handleCheckOneChange">隐藏</el-checkbox></template></el-table-column></el-table><router-view/></div></template><script>export default {name: 'App',data () {return {tableData: [{name: '李时珍',sex: '男',checked: false}, {name: '花木兰',sex: '女',checked: true}],checkAll: false,isIndeterminate: true}},methods: {handleCheckAllChange (val) {console.info('check all change is ', val)this.isIndeterminate = falsethis.tableData.forEach(item => {item.checked = val})},handleCheckOneChange (val) {console.info('check one change is ', val)let totalCount = this.tableData.lengthlet someStatusCount = 0this.tableData.forEach(item => {if (item.checked === val) {someStatusCount++}})this.checkAll = totalCount === someStatusCount ? val : !valthis.isIndeterminate = someStatusCount > 0 && someStatusCount < totalCount}}}</script> - 运行后的效果图如下:

在上图中,我们可以通过表头的隐藏多选框来批量设置列表数据,当我们选中上图“表头隐藏”多选框时,列表中的两个“隐藏”多选框都会被选中;当我们取消“表头隐藏”多选框时,列表中的两个“隐藏”多选框会同时被取消选中;当我们同时选中列表中的两个“隐藏”多选框时表头的“表头隐藏”多选框也会被选中;当我们同时取消列表中两个“隐藏”多选框时表头的“表头隐藏”多选框也会被取消选中;当列表中的两个“隐藏”多选框,一个被选中,另外一个没有被选中时表头的“表头隐藏”多选框会呈现第三种状态,样式本应该会是一条短横线,但是在上图中却没有显示预期的效果,这是在safari浏览器的效果,但是在chrome浏览器中会表现预期的第三种状态效果的。
4. 挖坑说明:

其实之初在添加这个功能的时候我是没有添加slot-scope="scope"属性,因为在开发工具中提示红色的波浪形,表示
'scope' is defined but never used.eslint-plugin-vue
5. 拓展
在自定义其它类型的表头时可以参考上述流程,框架是类似的,千万不要把插槽属性省略了,否则的话会有奇怪的坑出现。
------20200112勉
ElementUI的Table表格添加自定义头CheckBox多选框的更多相关文章
- 表格中的checkbox复选框 全选非全选 公共方法 及提交选中结果
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- element-ui的table表格控件表头与内容列不对齐问题
原文链接:点我 element-ui的table表格控件表头与内容列不对齐问题 解决方法:将以下样式代码添加到index.html.或app.vue中(必须是入口文件,起全局作用!)body .el- ...
- vue基于element-ui的三级CheckBox复选框
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态.但是element-ui table只支持多选行,并不能支持三级及以上的多选,所以写了这篇技术博文供以后学习使用. 效 ...
- elementUI 学习入门之 checkbox 复选框
CheckBox 复选框 与单选框基本类似.如:按钮样式.带边框.复选框按钮大小. eg: <template> <el-checkbox-group v-model="s ...
- GridPanel列头带有复选框的列
由于工作需要,封装了ExtJS4,GridPanel列头带有复选框的列, 代码如下: /** * 列头带有复选框的列 * */ Ext.define("org.pine.widget.Che ...
- php获取checkbox复选框的内容
php获取checkbox复选框的内容 由于checkbox属性,所有必须把checkbox复选择框的名字设置为一个如果checkbox[],php才能读取,以数据形式,否则不能正确的读取chec ...
- 转 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- 【转】纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- php怎么获取checkbox复选框的内容?
由于checkbox属性,所有必须把checkbox复选择框的名字设置为一个如果checkbox[],php才能读取,以数据形式,否则不能正确的读取checkbox复选框的值哦. <form n ...
随机推荐
- Keepalived & LVS: 实现web的负载均衡和高可用
目录 1. 环境介绍2. LVS DR模型中Realserver上的准备3. ha上的准备4. 配置keepalived5. 测试Realserver的切换6. failback页面测试7. keep ...
- Ubuntu18 永久设置分辨率1920x1080
起因 虚拟机(virtualBox)中设置 1920*1080 的分辨率后, 每次重启后都会回到默认,永久设置的方式如下 步骤: 添加系统设置 sudo xrandr --newmode " ...
- python基础之字符串基本功能
终于还是踏上了Python的不归路,不知道能不能走的完. 先总结一下今天学习的字符串的各个功能吧:只写了部分用的比较多的. 1.capitalize: 字符串首字母大写 >>> na ...
- Python 模拟登录几种常见方法
方法一:直接使用已知的cookie访问 优点: 简单,但需要先在浏览器登录 原理: 简单地说,cookie保存在发起请求的客户端中,服务器利用cookie来区分不同的客户端.因为http是一种无状态的 ...
- Firewall 防火墙
firewalld和iptables的关系: firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现.也就是说firewalld和iptables ...
- c++头文件包含 #ifndef ##pragma once
2013-04-14 17:03 (分类:计算机程序) 烦死了,这种垃圾小问题很多,你又必须要知道.......在编写c++程序时,会编写多个类或者多个cpp文件,免不了要多次使用include包含头 ...
- Linux Shell 计算脚本执行过程用了多长时间
#!/bin/bash starttime=`date +'%Y-%m-%d %H:%M:%S'` #执行程序 endtime=`date +'%Y-%m-%d %H:%M:%S'`start_sec ...
- Java基础环境配置及HelloWorld
一.什么是JDK,JRE JDK(Java Development Kit Java开发工具包) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE.所以安装了JDK, ...
- VS2015中使用qt开发客户端,QPluginLoader加载dll为null的解决办法
1,问题重现: 使用vs2015开发一款qt软件,使用了QPluginLoader动态加载插件的方式,调试的时候,发现dll模块没有加载进来,debug发现QPluginLoader的instance ...
- 推荐一款疫情期间适合在家办公的远程工具,仅需IP和密码轻松实现远程管理
这段时间,受疫情影响,很多企业都开启了居家办公模式.但疫情突发,大多数人的办公资料没有拷贝打包,对于居家办公的人,尤其是运维人员来说,很难完成顺利完成工作. 像向日葵.teamviewer之类的远程软 ...