echarts設(shè)置暫無(wú)數(shù)據(jù)方法實(shí)例及遇到的問(wèn)題
場(chǎng)景描述
我們?cè)陧?xiàng)目中,很多時(shí)候都會(huì)使用echarts進(jìn)行數(shù)據(jù)展示。
當(dāng)沒(méi)有數(shù)據(jù)的時(shí)候,echarts的展示就會(huì)特別的難看。
這個(gè)時(shí)候我們就會(huì)優(yōu)化界面的顯示,在echarts中展示暫無(wú)數(shù)據(jù)。
有很多中方法:
1.只設(shè)置echarts中的title選項(xiàng),其他選擇都不進(jìn)行設(shè)置
2.在頁(yè)面中使用v-show或者v-if。有數(shù)據(jù)的時(shí)候展示echarts,沒(méi)有數(shù)據(jù)的時(shí)候使用其他作為提示
現(xiàn)在我們使用第1種方式來(lái)看下,會(huì)出現(xiàn)什么樣的情況?
使用echarts中的title選項(xiàng)來(lái)處理暫無(wú)數(shù)據(jù)
代碼功能描述:
最初的時(shí)候是有數(shù)據(jù)的,點(diǎn)擊按鈕后會(huì)顯示暫無(wú)數(shù)據(jù)。
然后再次點(diǎn)擊,會(huì)有數(shù)據(jù)。以此循環(huán)
<template>
<div>
<el-button @click="showEcharts">切換</el-button>
<div id="myChart1"></div>
</div>
</template>
<script>
import echarts from 'echarts'
export default {
data() {
return {
backData: {
dataX: ['卿卿日常', '瑯琊榜', '仙劍奇?zhèn)b傳三', '射雕英雄傳', '偽裝者', '聊齋志異', '縣委大院'],
dataY:[820, 932, 901, 934, 1290, 1330, 1320]
},
indexOrder:1,
}
},
mounted() {
this.showEcharts()
},
methods: {
showEcharts() {
this.indexOrder++
let myChart1 = echarts.init(document.getElementById('myChart1'))
let option = {}
//通過(guò)控制 indexOrder 來(lái)實(shí)現(xiàn)是否展示數(shù)據(jù)
if (this.indexOrder % 2 ==0) {
option = {
xAxis: {
type: 'category',
data: this.backData.dataX
},
yAxis: {
type: 'value'
},
series: [
{
data: this.backData.dataY,
type: 'line',
smooth: true
}
]
}
} else {
option = {
title: {
text: '暫無(wú)數(shù)據(jù)',
x: 'center',
y: 'center',
textStyle: {
fontSize: 16,
fontWeight: 'normal',
}
}
}
}
myChart1.setOption(option)
},
}
}
</script>
實(shí)際上遇見(jiàn)的情況
當(dāng)我們第2次點(diǎn)擊按鈕的時(shí)候。雖然視圖上顯示了"暫無(wú)數(shù)據(jù)"。
但是仍然有圖表展示的信息。與我們最初的想法是相違背的。
它出現(xiàn)了數(shù)據(jù)和"暫無(wú)數(shù)據(jù)"同時(shí)出現(xiàn)了。我們只希望出現(xiàn)一種。
怎么會(huì)出現(xiàn)這樣的情況呢?不是應(yīng)該只展示其中一種情況嗎?
解決問(wèn)題的三種辦法
代碼中的 myChart1.setOption(option)
默認(rèn)情況ECharts 會(huì)合并新的參數(shù)和數(shù)據(jù),然后刷新圖表。
當(dāng)它合并之后,就會(huì)出現(xiàn)數(shù)據(jù)和"暫無(wú)數(shù)據(jù)"同時(shí)顯示在界面中。
如何解決這樣的情況呢?
1.使用 echarts中setOption(option,notMerge)的第二個(gè)參數(shù)來(lái)解決
chart.setOption(option, notMerge:boolean, lazyUpdate:boolean);
option 圖表的配置項(xiàng)和數(shù)據(jù)
notMerge 可選,是否不跟之前設(shè)置的 option 進(jìn)行合并,默認(rèn)為 false (即合并)。
lazyUpdate 可選,在設(shè)置完 option 后是否不立即更新圖表,默認(rèn)為 false(即立即更新)。
2.echarts.clear() 清空當(dāng)前實(shí)例,會(huì)移除實(shí)例中所有的組件和圖表。
我們可以在渲染圖標(biāo)前,先清空一下實(shí)例.
let myChart1 = echarts.init(document.getElementById('myChart1'))
myChart1.clear()
3.echarts.dispose()銷毀實(shí)例,銷毀后實(shí)例無(wú)法再被使用。
let myChart1 = echarts.init(document.getElementById('myChart1'))
myChart1.dispose()
echarts.clear() 與 echarts.dispose()的區(qū)別
echarts.clear()是清空實(shí)例,實(shí)例任然是存在的,類似于v-show echarts.dispose()是銷毀,銷毀后實(shí)例不存在,類似于v-if
使用 echarts 中setOption(option,notMerge)的第二個(gè)參數(shù)來(lái)解決
showEcharts() {
this.indexOrder++
let myChart1 = echarts.init(document.getElementById('myChart1'))
let option = {}
if (this.indexOrder % 2 ==0) {
option = {
xAxis: {
type: 'category',
data: this.backData.dataX
},
yAxis: {
type: 'value'
},
series: [
{
data: this.backData.dataY,
type: 'line',
smooth: true
}
]
}
} else {
option = {
title: {
text: '暫無(wú)數(shù)據(jù)',
x: 'center',
y: 'center',
textStyle: {
fontSize: 16,
fontWeight: 'normal',
}
}
}
}
//不進(jìn)行合并
myChart1.setOption(option,true)
},
總結(jié)
到此這篇關(guān)于echarts設(shè)置暫無(wú)數(shù)據(jù)方法及遇到的問(wèn)題的文章就介紹到這了,更多相關(guān)echarts設(shè)置暫無(wú)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TypeScript中交叉類型和聯(lián)合類型的區(qū)別詳解
聯(lián)合類型(Union Types)和交叉類型(Intersection Types)是 TypeScript 中的兩種高級(jí)類型,它們都用于組合多個(gè)類型并生成新的類型,但它們兩者之間的用法不一樣,本文小編就給大家講講TypeScript中交叉類型和聯(lián)合類型的區(qū)別,需要的朋友可以參考下2023-09-09
詳解js中構(gòu)造流程圖的核心技術(shù)JsPlumb
這篇文章主要介紹了js中構(gòu)造流程圖的核心技術(shù)JsPlumb,jsPlumb是一個(gè)強(qiáng)大的JavaScript連線庫(kù),它可以將html中的元素用箭頭、曲線、直線等連接起來(lái),適用于開(kāi)發(fā)Web上的圖表、建模工具等,需要的朋友可以參考下2015-12-12
JavaScript調(diào)用C語(yǔ)言的幾種方式
本文主要介紹了JavaScript調(diào)用C語(yǔ)言的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
location.href 在IE6中不跳轉(zhuǎn)的解決方法與推薦使用代碼
在js中,我們經(jīng)常使用location.href來(lái)實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn),為了方便我們寫成函數(shù)。下面就分別說(shuō)明下,下面的一些代碼的實(shí)現(xiàn)問(wèn)題。2010-07-07
js左側(cè)多級(jí)菜單動(dòng)態(tài)的解決方案
實(shí)現(xiàn)的效果很簡(jiǎn)單,就是點(diǎn)一下顯示,再點(diǎn)一下就隱藏,只不過(guò)是多了幾級(jí)的問(wèn)題。好,現(xiàn)在來(lái)說(shuō)說(shuō)我的設(shè)計(jì)思路,首先從第一級(jí)別開(kāi)始,添加如下代碼2010-02-02
js中class的點(diǎn)擊事件沒(méi)有效果的解決方法
下面小編就為大家?guī)?lái)一篇js中class的點(diǎn)擊事件沒(méi)有效果的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
js實(shí)現(xiàn)簡(jiǎn)單秒表走動(dòng)的時(shí)鐘特效
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單秒表走動(dòng)的時(shí)鐘特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08
ES6(ECMAScript 6)新特性之模板字符串用法分析
這篇文章主要介紹了ES6(ECMAScript 6)新特性之模板字符串用法,簡(jiǎn)單介紹了ES6模板字符串的概念、功能并結(jié)合實(shí)例形式分析了ES6模板字符串的用法,需要的朋友可以參考下2017-04-04

