@header-dragend 拖动表头改变列宽,并保存拖动后的宽度

1.需求:

当用户拖动表格的表头可以拖动列的宽度,并且记住拖动后的宽度。

2.逻辑思路

利用localStroage的本地存储功能,将拖动后的宽度存储到本地,再次进入页面的时候就会调用created,并获取本地存储的宽度,然后设置上宽度

3.实现

<template>
  <el-table
    ref="tableRef"
    border
    :data="tableData"
    @header-dragend="changeColWidth"
  >
    <el-table-column
      v-for="column in tableColHead"
      :key="column.columnTitle"
      :prop="column.columnName"
      :label="column.columnTitle"
      :width="column.width"
    >
      <template slot-scope="{row}">
        {{ row[column.columnName] }}
      </template>
    </el-table-column>
  </el-table>
</template>

<script>

export default {
  name: 'Test',
  data() {
    return {
      // 列表表头json
      tableColHead: [
        {
          'columnName': 'nameColumn',
          'columnTitle': '姓名',
          'width': '',
          'align': 'left',
          'isShow': true
        },
        {
          'columnName': 'ageColumn',
          'columnTitle': '年龄',
          'width': '400px',
          'isShow': true
        },
        {
          'columnName': 'sexColumn',
          'columnTitle': '性别',
          'width': '150px',
          'isShow': true
        }
      ],
      // 列表数据json
      tableData: [
        {
          nameColumn: '张三',
          ageColumn: 16,
          sexColumn: '男'
        },
        {
          nameColumn: '李四',
          ageColumn: 18,
          sexColumn: '女'
        }
      ]
    }
  },
  created() {
    // 页面初始化获取存储的json
    if (localStorage.getItem('applyTableColWidth')) {
      this.tableColHead = JSON.parse(localStorage.getItem('applyTableColWidth'))
    }
  },
  methods: {
    // 拖动表头改变列的宽度的时候触发的事件
    changeColWidth(newWidth, oldWidth, { property }) {
      const applyTableColWidth = this.tableColHead.map(item => {
        if (item.columnName === property) {
          item.width = newWidth
        }
        return item
      })
      // 存储列宽改变后的json
      localStorage.setItem('applyTableColWidth', JSON.stringify(applyTableColWidth))
    }
  }
}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值