解決vue一個(gè)頁(yè)面中復(fù)用同一個(gè)echarts組件的問(wèn)題
因?yàn)轫?yè)面中要用echarts圖表的地方比較多,所以封裝了組件,方便復(fù)用,如圖:
我需要這樣一個(gè)餅圖,并且接下來(lái)在很多次地方要用到。
直接復(fù)制官網(wǎng)的代碼,再改改數(shù)據(jù),需要用的時(shí)候直接拿來(lái)用。
但是接下來(lái)出現(xiàn)了一個(gè)問(wèn)題:如果我在同一個(gè)頁(yè)面多次使用這個(gè)組件,圖表將不能正常顯示。分析了一下, echarts通過(guò)id獲取對(duì)象
// 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
var myChart = echarts.init(document.getElementById('main'));
當(dāng)封裝為組件使用的時(shí)候,id固定,同一個(gè)頁(yè)面多次出現(xiàn)相同id,所以不能正常顯示。
所以想出來(lái)以下解決方案:
舉個(gè)栗子,如果我需要在一個(gè)頁(yè)面中使用該組件兩次,
在組件的data中,另外賦一個(gè)變量,暫且定為type。在父組件的data中,第一個(gè)圖標(biāo)的數(shù)據(jù)pieData1中添加一個(gè)type:1,第二個(gè)添加一個(gè)type:2
pieData1:{ type: 1, title: '失敗次數(shù)', list:[ {value:335, name:'502 Bad Gateway'}, {value:310, name:'404 Not Found'}, {value:234, name:'無(wú)法連接服務(wù)器'}, {value:135, name:'請(qǐng)求超時(shí)'}, {value:1548, name:'Trace LOSS'}, ], pieStyle: { width: '400px', height: '400px', float: 'right' } }, pieData2:{ type: 2, title: '失敗次數(shù)', list:[ {value:335, name:'502 Bad Gateway'}, {value:310, name:'404 Not Found'}, {value:234, name:'無(wú)法連接服務(wù)器'}, {value:135, name:'請(qǐng)求超時(shí)'}, {value:1548, name:'Trace LOSS'}, ], pieStyle: { width: '400px', height: '400px', float: 'right' } }
接下來(lái)改需要在同一個(gè)vue頁(yè)面中用兩次的子組件:
html:
<div id="demo1" :style="pieStyle" v-if="pieData.type==1"></div>
<div id="demo2" :style="pieStyle" v-if="pieData.type==2"></div>
js:
var myPie if(this.pieData.type==1){ myPie = echarts.init(document.getElementById("demo1")); }else if(this.pieData.type==2){ myPie = echarts.init(document.getElementById("demo2")); }
好了,問(wèn)題解決了,效果圖如下:
如果想到其它方法再補(bǔ)充。
補(bǔ)充知識(shí):vue中,封裝的Echart組件被同一個(gè)頁(yè)面多次調(diào)用,數(shù)據(jù)被覆蓋問(wèn)題解決辦法。
大概率是echarts init有問(wèn)題,是不是用class或id選擇器選擇元素來(lái)init了
錯(cuò)誤版本:
正確版本:
以上這篇解決vue一個(gè)頁(yè)面中復(fù)用同一個(gè)echarts組件的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中集成省市區(qū)街四級(jí)地址組件的實(shí)現(xiàn)過(guò)程
我們?cè)陂_(kāi)發(fā)中常會(huì)遇到選擇地址的需求,有時(shí)候只需要選擇省就可以,有時(shí)候則需要選擇到市、縣,以至于鄉(xiāng)鎮(zhèn),甚至哪個(gè)村都有可能,下面這篇文章主要給大家介紹了關(guān)于vue中集成省市區(qū)街四級(jí)地址組件的相關(guān)資料,需要的朋友可以參考下2022-12-12Vue使用自定義指令實(shí)現(xiàn)頁(yè)面底部加水印
本文主要實(shí)現(xiàn)給項(xiàng)目的整個(gè)背景加上自定義水印,可以改變水印的文案和字體顏色等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案
這篇文章主要介紹了Vue elementui字體圖標(biāo)顯示問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08vue.js多頁(yè)面開(kāi)發(fā)環(huán)境搭建過(guò)程
利用 vue-cli 搭建的項(xiàng)目大都是單頁(yè)面應(yīng)用項(xiàng)目,對(duì)于簡(jiǎn)單的項(xiàng)目,單頁(yè)面就能滿(mǎn)足要求。這篇文章主要介紹了vue.js多頁(yè)面開(kāi)發(fā)環(huán)境搭建 ,需要的朋友可以參考下2019-04-04vue雙向錨點(diǎn)實(shí)現(xiàn)過(guò)程簡(jiǎn)易版(scrollIntoView)
這篇文章主要介紹了vue雙向錨點(diǎn)實(shí)現(xiàn)過(guò)程簡(jiǎn)易版(scrollIntoView),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07在iview+vue項(xiàng)目中使用自定義icon圖標(biāo)方式
這篇文章主要介紹了在iview+vue項(xiàng)目中使用自定義icon圖標(biāo)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue+springboot批量刪除功能實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue+springboot批量刪除功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)之添加刪除功能
本文給大家?guī)?lái)一個(gè)小案例基于vue實(shí)現(xiàn)學(xué)生錄入系統(tǒng)功能,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07