今天就跟大家聊聊有關(guān)怎么在vue項(xiàng)目中使用ECharts實(shí)現(xiàn)異步更新,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的沙河網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!使用方法
使用Echarts首先得先把Echarts.js引進(jìn)來(lái)(放在文件的入口html文件里面)
<script src="public/js/echarts.common.min.js"></script>
在繪圖前我們需要為 ECharts 準(zhǔn)備一個(gè)具備高寬的 DOM 容器
<div id="main" ></div>
初始化一個(gè) echarts 實(shí)例并通過(guò) setOption 方法生成一個(gè)你想要的圖表類(lèi)型,
首先先把,echarts里setOption的option,單獨(dú)領(lǐng)出來(lái),初始化放在data里
data() { return { getSetOption: {//折線(xiàn)圖 title: { text: null }, tooltip: { trigger: 'axis' }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, yAxis: { type: 'value' }, legend: { data: [] }, xAxis: { type: 'category', data: [] }, series: [ { name: null, type: 'line', stack: '總?cè)藬?shù)', data: [] } ] }, getPieOption: {//餅圖 title: { text: null }, tooltip: { tooltip: 'item', formatter: "{a} <br/> : {c} (7v7rg72%)" }, series : [ { type: 'pie', radius: '55%', data:[ ].sort(function(a,b){return a.value - b.value;}), roseType: 'angle', } ] }, } }
下面是在methods里初始化的一個(gè)方法,
drawLineChart() { this.lineChartOrder = echarts.init(document.getElementById('lineChartOrder')); this.lineChartOrder.setOption(this.getSetOption); },
然后在mounted里調(diào)用這個(gè)方法
this.drawLineChart(),
接下來(lái)就就是數(shù)據(jù)異步加載與更新了。
以下的代碼是本地的json類(lèi)型,異步加載數(shù)據(jù)時(shí)只要填入數(shù)據(jù),然后在series里根據(jù)名字對(duì)應(yīng)到相應(yīng)的系列就可以了。
getOrderTotal(){//獲取一段時(shí)間內(nèi)的訂單統(tǒng)計(jì) api.getOrderStatistical(this.begin, this.end,this.kId) .then(res => { if (res.data.ok && res.data.r.length) { const results = res.data.r, legends = results.map(item => ({ name: item.channelName, data: item.dateStatisticals })) this.lineChartOrder.setOption({ title: { text: '訂單統(tǒng)計(jì)' }, legend: { data: legends.map(item => item.name) }, xAxis: { data: legends[0].data.map(item => item.date) }, series: legends.map(item => { return { type: 'line', name: item.name, data: item.data.map(item => item.count) } }) }) } }).catch(err => { // console.log(err) })
但是,echarts的數(shù)據(jù)是直接merge的,所以當(dāng)出現(xiàn)多條折線(xiàn)時(shí),如果當(dāng)天的數(shù)據(jù)為0,或者后臺(tái)傳過(guò)來(lái)的數(shù)據(jù)為空的時(shí)候,setOption的值根本就沒(méi)有更新,而是直接merge了,所以這個(gè)問(wèn)題就頭大了。
對(duì)于這個(gè)問(wèn)題的解決方法是
用getOption取到已經(jīng)存在的option, 然后用this.lineChartOrder.setOption.clear()
,清空option,最后this.lineChartOrder.setOption(option, false, false)
。
這樣就可以清掉了。
以下是官網(wǎng)異步數(shù)據(jù)加載與更新的方法,會(huì)相對(duì)簡(jiǎn)單些。
// 異步加載數(shù)據(jù) $.get('data.json').done(function (data) { // 填入數(shù)據(jù) myChart.setOption({ xAxis: { data: data.categories }, series: [{ // 根據(jù)名字對(duì)應(yīng)到相應(yīng)的系列 name: '銷(xiāo)量', data: data.data }] });
看完上述內(nèi)容,你們對(duì)怎么在vue項(xiàng)目中使用ECharts實(shí)現(xiàn)異步更新有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
分享標(biāo)題:怎么在vue項(xiàng)目中使用ECharts實(shí)現(xiàn)異步更新-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article38/cshssp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、建站公司、外貿(mào)建站、網(wǎng)站設(shè)計(jì)、Google、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容