vue+element 通过checkbox控制el-table-column的显示或隐藏

 前端HTML

//列表
<el-table>    
      <el-table-column prop="order" label="序号" header-align="center" 
       v-if="uncheckList.order" align="center"></el-table-column>
      <el-table-column prop="name" label="姓名" header-align="center" 
       v-if="uncheckList.name" align="center"></el-table-column>
      <el-table-column prop="age" label="年龄" header-align="center" 
       v-if="uncheckList.age" align="center"></el-table-column>
</el-table>
//筛选按钮
<el-popover
      placement="right"
      title="列筛选"
      trigger="click">
    <el-checkbox-group v-model="checkList" @change="filter">
    <el-checkbox v-for="(item,index) in tableList" :label="item.label">{{item.value}}</el-checkbox>
    </el-checkbox-group>
    <el-button size="small" slot="reference"><i class="el-icon-arrow-down el-icon-menu"></i></el-button>
</el-popover>

JS

//筛选按钮的数据列表,与table表头的数据一致
tableList: [
      {
        label: 'order',
        value: '序号'
      },{
        label: 'name',
        value: '名字'
      },{
        label: 'age',
        value: '年龄'
      }]

checkList: [],//筛选列选中的数据列表
uncheckList: {},//控制筛选列显示隐藏

//页面加载自动运行函数
mounted: function () {
            this.filter()
        },

//控制隐藏显示的函数
filter(val) {
                //初始化数据
                if (val == undefined) {
                    for (index in vm.tableList) {
                        let table = vm.tableList[index];
                        vm.checkList.push(table.label);
                        vm.uncheckList[table.label] = true;
                    }
                }
                //数据准备
                for (item in vm.uncheckList) {
                    vm.uncheckList[item] = false;
                }
                //数据处理
                for (index in vm.checkList) {
                    let name = vm.checkList[index];
                    if (name in vm.uncheckList) {
                        vm.uncheckList[name] = true;
                    }
                }
                this.$forceUpdate();
            }
通过v-if=""控制<el-table-column>的显示隐藏
所以v-if=""里面的数据值要和tableList里面的数据一一对应

最后结果:

取消上报单位的框就改列就会消失

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值