MeetinaXD
@admin

如图,需要做一个隐藏/显示左侧信息的开关

当使用v-if进行column的隐藏和显示时,会出现这样的情况:

隐藏column后再显示会错位

打开dev-tool的Element页面,可以看到,在column被隐藏之后再设置为显示时,高度的计算不正确。
正常的table高度:

隐藏column后再显示:

于是去翻看el-table的源码,发现通过以下代码更新height:

翻阅el-table的文档,发现确实有提到doLayout函数

(我觉得,无论在哪儿,“可能”和“也许”都是最灵性的词语。俺找bug找了两个小时,最后被官方文档的“可能”搞的是一点脾气都没有嗷)
之后用就好了,在点击按钮后,也就是切换显示状态时,做一次this.$refs.table.doLayout()。但记得等待渲染完成后再调用:

this.$nextTick(() => {
  this.$refs.table.doLayout()
})

同时,如果table-header在隐藏column前后会发生变化,记得对scrollbar进行额外的设置,否则会偏离原位置。

另外,在寻找解决方法时还找到了另外一些情况下针对el-table更改column时错位的一些解决方案。但对我不起作用,如果以上方法不奏效,那么可以试试它们:
element el-table 表格列 v-if 显示 隐藏 乱序问题
element的table添加动态列显示,布局错乱更改

下午9:09 · 2021年02月25日
1024
0
0
发表留言

编程
element-ui table在切换column显示时错位的解决方案
如图,需要做一个隐藏/显示左侧信息的开关当使用v-if进行column的隐藏和显示时,会出现这样的情况:隐藏column后再显示会错位打开d...
扫描右侧二维码继续阅读
February 25, 2021
My Codes
blogger
meetinaxd
喜欢猪🐗
mylesson 作者
alovajs core dev
本质是一条野猪
你知道吗?

每吃一只卤🐽,就会有一条野猪失去它的鼻子
上方可以切换日夜模式

统计
文章:28 篇
分类:4 个
评论:5 条
运行时长:4年283天
by yoniu.
My Codes