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