vue动态改变el-table表格列

<template>
  <div class="conter">
    <el-table :data="tableData" stripe border style="width: 98%" ref="tableDataRef">
      <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
      <el-table-column type="index" width="55" label="序号" align="center"></el-table-column>
      <el-table-column v-if="colData[0].istrue" prop="name" label="名称" align="center"></el-table-column>
      <el-table-column v-if="colData[1].istrue" prop="select" label="性别" align="center"></el-table-column>
      <el-table-column v-if="colData[2].istrue" prop="kafang" label="年龄" align="center"></el-table-column>
      <el-table-column v-if="colData[3].istrue" prop="fengbi" label="时间" align="center"></el-table-column>
      <el-table-column v-if="colData[4].istrue" prop="isETF" label="事件" align="center"></el-table-column>
      <el-table-column v-if="colData[5].istrue" prop="range" label="地点" align="center"></el-table-column>
  </el-table>
 
  <el-popover placement="right" width="400" trigger="click">
    <el-checkbox-group v-model="colOptions">
      <el-checkbox v-for="item in colSelect" :label="item" :key="item" ></el-checkbox>
    </el-checkbox-group>
    <el-button slot="reference">设置</el-button>
  </el-popover>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
            name: 'fruit-1',
            date: 'apple-10',
            select: 'banana-10',
            kafang: 'orange-10'
          },
          {
            name: 'fruit-2',
            date: 'apple-20',
            select: 'banana-20',
            kafang: 'orange-20'
          }
        ],
        colData: [
          {title: "名称",istrue: true},
          {title: "性别",istrue: true},
          {title: "年龄",istrue: true},
          {title: "时间",istrue: true},
          {title: "事件",istrue: true},
          {title: "地点",istrue: true}
        ],
        colOptions: [],
        colSelect: [],
      }
    },
    mounted() {},
    created() {
      var _this = this;
      for (let i = 0; i < _this.colData.length; i++) {
        _this.colSelect.push(_this.colData[i].title);
        // if (_this.colData[i].title == '名称') { //初始化不想展示的列可以放在这个条件里
        //   continue;
        // }
        _this.colOptions.push(_this.colData[i].title); 
      }
    },
    watch: {
      colOptions(valArr) {
        var arr = this.colSelect.filter(i => valArr.indexOf(i) < 0); // 未选中
        this.colData.filter(i => {
          if (arr.indexOf(i.title) != -1) {
            i.istrue = false;
            this.$nextTick(() => {
              this.$refs.tableDataRef.doLayout();
            });
          } else {
            i.istrue = true;
            this.$nextTick(() => {
              this.$refs.tableDataRef.doLayout();
            });
          }
        });
      }
    },
    methods: {
    }
  }
</script>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值