关于Element-ui中el-table出现的表格错位问题的解决方案 // 问题介绍:表格数据整个都是后端返回的(表头 + 数据)页面(aPage.vue)里是一个完整的组件<newPag
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
免费下载资源
·
// 问题介绍:表格数据整个都是后端返回的(表头 + 数据)页面(aPage.vue)里是一个完整的组件<newPageCompYt /> 组件中有一个el-table(有v-if控制显示隐藏),初步判断是因为表头数据过长 + v-if会导致这个问题概率性出现(刷新就好了,偶尔刷新又有了)
1、数据更新后出现的错位问题
1.1 直接在数据赋值后执行doLayout方法
resetLayout() {
this.$nextTick(() => {
if (this.$refs.tableRef && this.$refs.tableRef.doLayout) {
this.$refs.tableRef.doLayout();
}
})
},
1.2在生命周期updated里执行doLayout方法
updated() {
this.resetLayout();
}
2、浏览器窗口大小变化时出现的错位问题
// 绑定window的onresize事件(onresize只能有一个)
window.onresize = () => {
if (this.$refs.tableRef && this.$refs.tableRef.doLayout) {
this.$refs.tableRef.doLayout();
}
}
3、当有多个Tab标签时,切换标签出现的错位问题
3.1 在组件守卫beforeRouteEnter里执行doLayout方法
beforeRouteEnter(to, from, next) {
if (this.$refs.tableRef && this.$refs.tableRef.doLayout) {
this.$refs.tableRef.doLayout();
}
next()
}
3.2 如果使用了keep-alive,可以在activated里执行doLayout方法
activated() {
if (this.$refs.tableRef && this.$refs.tableRef.doLayout) {
this.$refs.tableRef.doLayout();
}
}
3.3 也可以通过监听路由,在watch里执行doLayout方法
watch: {
$route() {
this.$nextTick(() => {
if (this.$refs.tableRef && this.$refs.tableRef.doLayout) {
this.$refs.tableRef.doLayout();
}
})
}
}
GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45
7 个月前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 7 个月前
更多推荐
已为社区贡献5条内容
所有评论(0)