解決echarts圖表使用v-show控制圖表顯示不全的問題
最近做echarts圖表時,因為涉及到使用開關變量控制不同圖表的顯示隱藏,用 v-if 時會出現沒有獲取到dom結構而報錯,所以改用 v-show,但是 v-show 本身是結構已經存在,當數據發(fā)生變化時,結構并未重新渲染,所以會出現 echarts 圖表未獲取到最外層大盒子的寬度而顯示一半的情況,就像下圖:

還折騰了半天,其實就是當數據請求出來后,調用繪制ehcarts時圖表的時候,用 Vue.nextTick(function () { // DOM 更新了 }) 主動觸發(fā)一下圖表,使之強制渲染就可以正常顯示了

正常顯示圖表:

補充知識:vue中v-if和v-show對echarts圖的影響
背景
前幾日在做UBA項目的時候有一個頁面需要用echarts圖展示用戶對各個節(jié)目的點播量,頁面結構為左側柱狀圖展示節(jié)目點播量,右側餅圖和折線圖展示某個節(jié)目的用戶點播分布和用戶點播變化趨勢(如下圖),因為我們造的數據是11月26日的,而進入頁面默認查詢最近1天的,所以剛進來肯定是查不到數據,需要自行選擇時間去查詢數據。而在查數據的時候出現了echarts折線圖無法正確獲取寬高的情況。

解決
后來在走讀代碼的過程中我發(fā)現對于右側餅圖和折線圖的組件我是用v-show判斷的,當第一次沒查到數據的時候,右邊的echarts圖也已經初始化了,并且由于v-show的display:none而沒有拿到正確的寬高,這才出現的上圖的這種現象。而餅圖沒有出現這種現象大概是因為餅圖中沒有設置grid:{containLabel:true}。后來我將v-show改成了v-if,只有當柱狀圖獲取到了數據才加載右邊的元素,就再也不會有這種問題了。


以上這篇解決echarts圖表使用v-show控制圖表顯示不全的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue.js實戰(zhàn)之使用Vuex + axios發(fā)送請求詳解
這篇文章主要給大家介紹了關于Vue.js使用Vuex與axios發(fā)送請求的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04
Vue3+Element?Plus實現el-table跨行顯示(非腳手架)
這篇文章主要介紹了Vue3+Element Plus實現el-table跨行顯示(非腳手架),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09

