?一、Echarts渲染的邏輯:
如果echarts未實(shí)例化則進(jìn)行實(shí)例化過(guò)程,一旦實(shí)例化力崇,便會(huì)在div容器生成一個(gè)?echarts_instance?屬性, 該屬性值即為當(dāng)前echarts的ID,然后根據(jù)該ID進(jìn)行渲染粪牲。
二古瓤、因此,重新加載數(shù)據(jù)但不重新渲染的原因:
第一次渲染圖表后腺阳,便有了ID落君,但是我們非第一次加載數(shù)據(jù)時(shí),圖表的_echarts_instance_屬性值我們沒(méi)有顯式引用亭引,所以此時(shí)绎速,待渲染的圖表在原有的div容器中,匹配不到想要渲染的圖表焙蚓,則出現(xiàn)數(shù)據(jù)加載成功纹冤,但是不渲染的情況:
三、解決方案:
1主届、全局刷新div赵哲,然后渲染。這樣保證了每次加載的div中的圖表ID【即_echarts_instance_】是第默認(rèn)值君丁,不需要顯式指定枫夺;
2、顯式指定ID绘闷。即執(zhí)行如下代碼后 進(jìn)行渲染
document.getElementById('div的ID').setAttribute('_echarts_instance_', '')
注:解決方案2的關(guān)鍵代碼:
//?如果不設(shè)置如下這行代碼橡庞,更新數(shù)據(jù)將不重新渲染圖表,document.getElementById('container').setAttribute('_echarts_instance_',?'')
myChart.setOption(option,true);
四印蔗、寫在最后
共同進(jìn)步扒最、共同學(xué)習(xí);
V*公眾號(hào):軟件編程網(wǎng)站開(kāi)發(fā)