el-table高度自适应、数据查询后高度展示错误问题

在很多场景中我们需要实现表格的高度自适应,即不同屏幕大小下需要使用不同的高度来设置表格,那么我们应该如何实现呢?

1.el-table实现高度自适应

通过以下代码可以实现表格根据屏幕进行自适应

javascript 复制代码
设置表格的高度
<el-table ref="tableData"
:data="tableData" border
:data-key="'id'"
:height="tableHeight"
:max-height="tableHeight">
</el-table>

<script>
export default {
  data: function () {
    return {
     
      tableData: [], // 表格数据
      tableHeight:0, // 表格高度
    };
  },
  mounted() {
    //挂载window.onresize事件(动态设置table高度)
    let _this = this;
    window.onresize = () => {
      if (_this.resizeFlag) {
        clearTimeout(_this.resizeFlag);
      }
      _this.resizeFlag = setTimeout(() => {
        _this.getTableHeight();
        _this.resizeFlag = null;
      }, 100);
    };
  },
  created() {
    this.getTableHeight();
  },
  methods: {
    getTableHeight() {
      let tableH = 200; //距离页面下方的高度
      let tableHeightDetil = window.innerHeight - tableH;
      if (tableHeightDetil <= 300) {
        this.tableHeight = 300;
      } else {
        this.tableHeight = window.innerHeight - tableH;
      }
      console.log(this.tableHeight)
    },
  }
}

2.自适应的问题,数据变化后高度未更新

当我们自定义高度后,在查询数据时会出现以下的情况,我们表格高度不会撑满到我们实际给定的高度,如下图所示:

那么我们该如何修改呢?其实很简单,在你的查询方法里面添加如下代码即可:

javascript 复制代码
this.$nextTick(() => {
    this.$refs.tableData.doLayout();
});
注意:要在el-table表里面加ref的指向名称

现在我们在查询,高度也不会出现错误啦!如下图:

相关推荐
0_Error_6 小时前
猫国建设者 修改资源 自动采集
javascript
贩卖黄昏的熊7 小时前
NestJS简明教程——异常处理和日志
javascript·node.js·nest.js
黄泉路醉s9 小时前
在Vant+Vue+TypeScript的H移动前端使用UnoCSS
前端·vue.js·typescript
海带紫菜菠萝汤10 小时前
FFmpeg.wasm 实践:在浏览器中运行 FFmpeg 的能力边界与性能瓶颈
前端·javascript·ffmpeg·音视频·wasm
名字还没想好☜10 小时前
React 受控输入框光标跳到末尾:格式化输入时的 selection 丢失 bug 与修复
前端·javascript·react.js·bug·react·next.js
upgrador11 小时前
桌面应用开发:Electron 与 NSIS 的关系、打包流程及 Windows 本地构建实战
javascript·windows·electron
我要两颗404西柚11 小时前
Stage three:VUE工程化与实战工具
前端·javascript·vue.js
写不来代码的草莓熊12 小时前
Cesium 地图交互绘制圆形、多边形
前端·javascript·地图
JackSparrow41413 小时前
前端安全之JS混淆+请求加密+请求签名以提升爬虫难度
前端·javascript·后端·爬虫·python·安全
看昭奚恤哭13 小时前
基于 RuoYi-Vue-Pro 定制了一个后台管理系统 magic-admin , 开源出来!
前端·vue.js·开源