关于element表格遇到的问题以及解决方法

1,000 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

前言:

掘友们,大家好。今天在项目中使用element表格的时候遇到了之前遗留的问题,这次就全部的记录一下,并给大家简单的讲解一下遇到的问题和解决办法。

问题一、关于element表格切换分页回滚问题

element表格配合page分页使用时,当我们切换分页,请求后台数据。但是,我们在渲染的过程中,只是利用了vue的双向数据绑定。更换了表格中的数据,并没有直接的操作dom元素,此时,element的表格数据发生变化。但是,当我们滚动表格,滚动到底部呢?分页请求数据后,渲染的数据发生了变化,但是我们的表格却还是滚动在底部展示。

解决方法:

我们可以封装全局方法,通过调用全局方法,使表格在数据更新后,重新回到顶部。声明function函数,挂载在window原型上。el-table__body-wrapper为element表格组件的class类名。获取类名,设置scrollTop为0。

window.resetTableScrollTop = function() {
    let tables = document.getElementsByClassName('el-table__body-wrapper');
    for(let i = 0; i < tables.length; i++) {
        tables[i].scrollTop = 0;
    }
}

问题二、关于element表格错位问题

表格错位问题,是因为设置了fixed定位导致的,还有就是固定了父元素的高度,element表格默认是撑满的,同时你又在el-table-column中设置了宽度width="",就会导致表格错位。 image.png

解决方法1:

使用官方提供的doLayout方法,对 Table 进行重新布局。当 Table 或其祖先元素由隐藏切换为显示时,可能需要调用此方法。通过ref控制table渲染数据时触发。

this.$nextTick(() => {
      if (this.$refs.Table && this.$refs.Table.doLayout) {
        this.$refs.Table.doLayout();
      }
})

解决方法2:

只给部分el-table-column设置宽度,让其他的宽度空余,达到自适应效果。

问题三、关于element分页后index序号延续问题

表格分页后element表格索引序号未发生变换,是因为element序号默认只设置当前表格内部的。 fg4pw-i3ew8.gif

解决方法:

给index属性绑定方法indexMethod

<el-table-column
  type="index"
  :index="indexMethod"
  width="50">
</el-table-column>

方法内部时page当前页*pageSize当前页数量+索引+1就可以了。

indexMethod(index) {
    return (this.alipayReq.page) * (this.alipayReq.pageSize) + index + 1
}

效果

rcqm6-nbh1x.gif

总结:

这是我在使用element表格的时候遇到的问题。总体来说,难度不大。element表格官方文档有很多的api,而且在项目中的应用场景也是非常多的,希望对大家有帮助。