vue彈窗里面使用echarts不顯示的問題及解決
前言
彈出層中插入echarts圖表,沒有報(bào)錯(cuò),但是圖表加載不出來(lái)
此彈出層沒有用element 的dialog 對(duì)話框,用的自己封裝的組件,但是出現(xiàn)的問題是一樣的
原因分析
彈出層 的內(nèi)容是懶渲染的,即在第一次被打開之前,傳入的默認(rèn) slot 不會(huì)被渲染到 DOM 上。
彈出層組件會(huì)監(jiān)聽 visible 的狀態(tài),當(dāng)狀態(tài)為 true 時(shí),立刻觸發(fā) open 事件,但這個(gè)時(shí)候 彈出層 的內(nèi)容還沒有渲染。
因?yàn)?Vue 組件通過 $emit 觸發(fā)的事件并不是異步執(zhí)行的,而是同步執(zhí)行。
解決方式
一、nextTick
? ? ? this.$nextTick(() => { ? ? ? // ?執(zhí)行echarts方法 ? ? ? ? this.initEcharts() ? ? ? })
二、setInterval
?setInterval(() => { ? ? ? ? // ?執(zhí)行echarts方法 ? ? ? ? this.initEcharts() ? ? ? }, 500);
彈出層組件和畫圖方法:
? ? <popup :tClick="retreatFromSave" :tBoot="organizationUp" tWidth='1080px'> ? ? ? ? <div slot="main" class="teamwork-text-nr"> ? ? ? ? <div class="line">實(shí)景圖</div> ?? ? ? ? ? ?<!-- 圖表 --> ?? ? ? ? ? ?<div id="sCharts" style="height: 500px;"></div> ? ? ? ?? ?</div> ? ? ? <div slot="footer" style="text-align: right;padding-right: 30px;"> ? ? ? ? <jurisbtn tFloat="none" :tClick="retreatFromSave" tName="關(guān)閉" type="primary"></jurisbtn> ? ? ? </div> ? ? </popup>
? ? // ? 圖表 ? ? initEcharts() { ? ? ? const myChart = this.$echarts.init(document.getElementById('sCharts')) ? ? ? const option = { ? ? ? ? tooltip: { ? ? ? ? ? trigger: 'axis', ? ? ? ? ? axisPointer: { ? ? ? ? ? ? type: 'cross' ? ? ? ? ? } ? ? ? ? }, ? ? ? ? xAxis: [ ? ? ? ? ? { ? ? ? ? ? ? type: 'category', ? ? ? ? ? ? data: [ ? ? ? ? ? ? ? '1月', ? ? ? ? ? ? ? '2月', ? ? ? ? ? ? ? '3月', ? ? ? ? ? ? ? '4月', ? ? ? ? ? ? ? '5月', ? ? ? ? ? ? ? '6月', ? ? ? ? ? ? ? '7月', ? ? ? ? ? ? ? '8月', ? ? ? ? ? ? ? '9月', ? ? ? ? ? ? ? '10月', ? ? ? ? ? ? ? '11月', ? ? ? ? ? ? ? '12月' ? ? ? ? ? ? ], ? ? ? ? ? ? axisPointer: { ? ? ? ? ? ? ? type: 'shadow' ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? ? ], ? ? ? ? yAxis: [ ? ? ? ? ? { ? ? ? ? ? ? type: 'value', ? ? ? ? ? ? name: '總體積', ? ? ? ? ? ? min: 0, ? ? ? ? ? ? max: 10, ? ? ? ? ? ? interval: 1, ? ? ? ? ? ? axisLabel: { ? ? ? ? ? ? ? formatter: '{value} m3' ? ? ? ? ? ? } ? ? ? ? ? }, ? ? ? ? ? { ? ? ? ? ? ? type: 'value', ? ? ? ? ? ? name: '使用負(fù)荷', ? ? ? ? ? ? min: 0, ? ? ? ? ? ? max: 100, ? ? ? ? ? ? interval: 10, ? ? ? ? ? ? axisLabel: { ? ? ? ? ? ? ? formatter: '{value} %' ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? ? ], ? ? ? ? series: [ ? ? ? ? ? { ? ? ? ? ? ? name: '總體積', ? ? ? ? ? ? type: 'bar', ? ? ? ? ? ? data: [2.0, 4.9, 5.5, 2.2, 4.6, 6.7, 5.6, 6.2, 3.6, 2.0, 6.4, 3.3], ? ? ? ? ? ? itemStyle: { ? ? ? ? ? ? ? normal: { ? ? ? ? ? ? ? ? color: '#d0e17d' ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? }, ? ? ? ? ? { ? ? ? ? ? ? name: '使用負(fù)荷', ? ? ? ? ? ? type: 'line', ? ? ? ? ? ? yAxisIndex: 1, ? ? ? ? ? ? data: [100, 22, 33, 45, 63, 80, 20, 23, 23, 65, 12, 6.2], ? ? ? ? ? ? itemStyle: { ? ? ? ? ? ? ? normal: { ? ? ? ? ? ? ? ? color: '#898989' ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? } ? ? ? ? ] ? ? ? } ? ? ? myChart.setOption(option); ? ? },
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue?Echarts實(shí)現(xiàn)多功能圖表繪制的示例詳解
作為前端人員,日常圖表、報(bào)表、地圖的接觸可謂相當(dāng)頻繁,今天小編隆重退出前端框架之VUE結(jié)合百度echart實(shí)現(xiàn)中國(guó)地圖+各種圖表的展示與使用;作為“你值得擁有”專欄階段性末篇,值得一看2023-02-02vscode 開發(fā)Vue項(xiàng)目的方法步驟
這篇文章主要介紹了vscode 開發(fā)Vue項(xiàng)目的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-11-11Vue3組合式函數(shù)Composable實(shí)戰(zhàn)ref和unref使用
這篇文章主要為大家介紹了Vue3組合式函數(shù)Composable實(shí)戰(zhàn)ref和unref使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06vue如何解決sass-loader的版本過高導(dǎo)致的編譯錯(cuò)誤
這篇文章主要介紹了vue如何解決sass-loader的版本過高導(dǎo)致的編譯錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06通用vue組件化展示列表數(shù)據(jù)實(shí)例詳解
組件化開發(fā)能大幅提高應(yīng)用的開發(fā)效率、測(cè)試性、復(fù)用性等,下面這篇文章主要給大家介紹了關(guān)于通用vue組件化展示列表數(shù)據(jù)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06默認(rèn)瀏覽器設(shè)置及vue自動(dòng)打開頁(yè)面的方法
今天小編就為大家分享一篇默認(rèn)瀏覽器設(shè)置及vue自動(dòng)打開頁(yè)面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-09-09