關(guān)于Element-ui中el-table出現(xiàn)的表格錯(cuò)位問(wèn)題解決
前言
在使用element-ui中的el-table時(shí),我們經(jīng)常會(huì)用到fiexd屬性,而使用了fixed屬性之后,就會(huì)容易在各種場(chǎng)景出現(xiàn)表格錯(cuò)位的問(wèn)題。
查閱element-ui官網(wǎng),發(fā)現(xiàn)官網(wǎng)提供了doLayout方法來(lái)解決這個(gè)問(wèn)題

總結(jié)容易出現(xiàn)錯(cuò)位問(wèn)題的幾種場(chǎng)景及解決辦法
1、數(shù)據(jù)更新后出現(xiàn)的錯(cuò)位問(wèn)題
1.1 直接在數(shù)據(jù)賦值后執(zhí)行doLayout方法
this.data = data;
// 在數(shù)據(jù)更新后執(zhí)行
this.$nextTick(() => {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
})1.2在生命周期updated里執(zhí)行doLayout方法
updated() {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
}2、瀏覽器窗口大小變化時(shí)出現(xiàn)的錯(cuò)位問(wèn)題
// 綁定window的onresize事件(注意,onresize事件只能有一個(gè))
window.onresize = () => {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
}3、當(dāng)有多個(gè)Tab標(biāo)簽時(shí),切換標(biāo)簽出現(xiàn)的錯(cuò)位問(wèn)題
這時(shí)可以有多種解決方式
3.1 在組件守衛(wèi)beforeRouteEnter里執(zhí)行doLayout方法
beforeRouteEnter(to, from, next) {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
//不能忘記這個(gè)哦
next();
}3.2 如果使用了keep-alive,可以在activated里執(zhí)行doLayout方法
activated() {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
}3.3 也可以通過(guò)監(jiān)聽(tīng)路由,在watch里執(zhí)行doLayout方法
watch: {
$route() {
this.$nextTick(() => {
// myTable是表格的ref屬性值
if (this.$refs.myTable && this.$refs.myTable.doLayout) {
this.$refs.myTable.doLayout();
}
})
}
}如果當(dāng)項(xiàng)目已經(jīng)開(kāi)發(fā)進(jìn)入尾聲,此時(shí)需要修改大量的文件,而我們可能更希望一次性解決這個(gè)問(wèn)題,這個(gè)時(shí)候可以在App.vue里找到解決的思路
<template>
<div id="app">
<router-view ref="appView"></router-view>
</div>
</template>
<script>
export default {
data() {
},
watch: {
$route() {
//切換標(biāo)簽時(shí)
this.handleRefreshTable();
}
},
created() {
let _this = this;
//窗口改變時(shí)
window.onresize = function () {
_this.handleRefreshTable();
};
},
updated() {
//數(shù)據(jù)改變時(shí)
this.handleRefreshTable();
},
methods: {
handleRefreshTable() {
this.$nextTick(() => {
// 獲取頁(yè)面中已注冊(cè)過(guò)ref的所有的子組件。
let refList = this.$refs.appView.$refs;
if (refList) {
for (let i of Object.keys(refList)) {
// 根據(jù)doLayout方法判斷子組件是不是el-table
if (refList[i] && refList[i].doLayout) {
// 執(zhí)行doLayout方法
refList[i].doLayout();
}
}
}
})
}
}
};
</script>附:解決element中el-table中表頭和內(nèi)容錯(cuò)位的方法
在使用element中table組件的時(shí)候,有時(shí)候在部分不兼容的瀏覽器中,會(huì)出現(xiàn)以下表頭和內(nèi)容錯(cuò)位的情況。以下提供了兩種解決方案,親測(cè)有效果。

方法一:
在第一個(gè)el-table-column中加上:key="Math.random()"
<el-table :data="tableData" border>
<el-table-column :key="Math.random()" prop="date" label="日期"> </el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
<el-table-column prop="name" label="姓名"> </el-table-column>
</el-table>
方法二:
在<el-table>上綁定ref='tableRef' ,然后在調(diào)取到數(shù)據(jù)后執(zhí)行以下代碼
this.$nextTick(() => {
this.$refs.tableRef.doLayout()
})
總結(jié)
到此這篇關(guān)于Element-ui中el-table出現(xiàn)的表格錯(cuò)位問(wèn)題解決的文章就介紹到這了,更多相關(guān)Element-ui中el-table表格錯(cuò)位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能實(shí)例
- vue element-ui實(shí)現(xiàn)el-table表格多選以及回顯方式
- el-element中el-table表格嵌套el-select實(shí)現(xiàn)動(dòng)態(tài)選擇對(duì)應(yīng)值功能
- element el-table表格的二次封裝實(shí)現(xiàn)(附表格高度自適應(yīng))
- VUE2.0+ElementUI2.0表格el-table實(shí)現(xiàn)表頭擴(kuò)展el-tooltip
- VUE2.0+ElementUI2.0表格el-table循環(huán)動(dòng)態(tài)列渲染的寫(xiě)法詳解
- VUE2.0 ElementUI2.0表格el-table自適應(yīng)高度的實(shí)現(xiàn)方法
- Element el-table 表格使用詳解
相關(guān)文章
Element圖表初始大小及窗口自適應(yīng)實(shí)現(xiàn)
這篇文章主要介紹了Element圖表初始大小及窗口自適應(yīng)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
在Vue中延遲執(zhí)行某個(gè)函數(shù)的實(shí)現(xiàn)方式
在Vue中延遲執(zhí)行某個(gè)函數(shù),你可以使用setTimeout()函數(shù)或者Vue提供的生命周期鉤子函數(shù),本文通過(guò)一些示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12
使用Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能
本文章主要來(lái)介紹一下第一個(gè)階段,也就是前端校驗(yàn)的驗(yàn)證碼的實(shí)現(xiàn),下面來(lái)介紹一下拖動(dòng)驗(yàn)證碼的具體實(shí)現(xiàn)。這篇文章主要介紹了利用 Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼,需要的朋友可以參考下2019-06-06
Vue中用props給data賦初始值遇到的問(wèn)題解決
這篇文章主要介紹了Vue中用props給data賦初始值遇到的問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
解決ant-design-vue中menu菜單無(wú)法默認(rèn)展開(kāi)的問(wèn)題
這篇文章主要介紹了解決ant-design-vue中menu菜單無(wú)法默認(rèn)展開(kāi)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
vue實(shí)現(xiàn)可改變購(gòu)物數(shù)量的購(gòu)物車
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)可改變購(gòu)物數(shù)量的購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

