返回

隐藏table一列,别再一味地用el-table-column的show-overflow-tooltip

前端

避免使用 el-table-columnshow-overflow-tooltip

在使用 el-table 组件时,很多人可能会遇到需要隐藏某一列的情况。这时,一种常见的做法是使用 el-table-columnshow-overflow-tooltip 属性来实现列的隐藏。

<el-table-column
  prop="name"
  label="姓名"
  show-overflow-tooltip
/>

这种方法虽然简单,但它有一些缺点:

  • 它会在列头显示一个工具提示,提示用户可以点击隐藏该列。
  • 它只能隐藏最后一列。
  • 它不能在列被隐藏后将其恢复显示。

使用 v-if 实现列的隐藏

为了克服上述缺点,我们可以使用 v-if 指令来实现列的隐藏。

<el-table-column
  v-if="showNameColumn"
  prop="name"
  label="姓名"
/>
data() {
  return {
    showNameColumn: true,
  }
}

这种方法的好处是:

  • 它不会在列头显示工具提示。
  • 它可以隐藏任何列。
  • 它可以恢复隐藏的列。

使用自定义指令实现列的隐藏

如果需要对列的隐藏行为进行更多的控制,比如隐藏多列、设置隐藏的延迟等,可以使用自定义指令来实现。

<el-table-column
  v-column-hide
/>
Vue.directive('column-hide', {
  bind(el, binding) {
    // 获取列头元素
    const header = el.querySelector('.el-table_header-column');

    // 添加隐藏按钮
    const button = document.createElement('button');
    button.innerHTML = '隐藏';
    button.addEventListener('click', () => {
      // 隐藏列
      el.style.display = 'none';
    });

    // 将隐藏按钮添加到列头
    header.appendChild(button);
  },
});

这种方法的好处是:

  • 它可以对列的隐藏行为进行更多的控制。
  • 它可以实现更复杂的隐藏逻辑。

总结

本文介绍了如何在 table 页面中以低成本的方式添加列隐藏控制器。通过使用 v-if 指令和自定义指令,可以实现不同场景下的列隐藏需求。希望本文对您有所帮助。