vue彈窗里面使用echarts不顯示的問題及解決
前言
彈出層中插入echarts圖表,沒有報錯,但是圖表加載不出來
此彈出層沒有用element 的dialog 對話框,用的自己封裝的組件,但是出現(xiàn)的問題是一樣的
原因分析
彈出層 的內(nèi)容是懶渲染的,即在第一次被打開之前,傳入的默認(rèn) slot 不會被渲染到 DOM 上。
彈出層組件會監(jiān)聽 visible 的狀態(tài),當(dāng)狀態(tài)為 true 時,立刻觸發(fā) open 事件,但這個時候 彈出層 的內(nèi)容還沒有渲染。
因為 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">實景圖</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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue.directive 實現(xiàn)元素scroll邏輯復(fù)用
這篇文章主要介紹了Vue.directive 實現(xiàn)元素scroll邏輯復(fù)用功能,文中給大家提到元素實現(xiàn)滾動的條件有兩個,具體內(nèi)容詳情大家參考下本文2019-11-11
vue2.* element tabs tab-pane 動態(tài)加載組件操作
這篇文章主要介紹了vue2.* element tabs tab-pane 動態(tài)加載組件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue + OpenLayers 快速入門學(xué)習(xí)教程
大家都知道使用 Openlayers可以很靈活自由的做出各種地圖和空間數(shù)據(jù)的展示。而且這個框架是完全免費和開源的,本文記錄下 Vue 使用 OpenLayers 入門,使用 OpenLayers 創(chuàng)建地圖組件的相關(guān)知識,需要的朋友一起學(xué)習(xí)下吧2021-09-09
Vite打包優(yōu)化之縮小打包體積實現(xiàn)詳解
這篇文章主要為大家介紹了使用Vite縮小打包體積如何實現(xiàn)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

