怎么在vue項目中使用ECharts實現(xiàn)異步更新-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(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)

成都定制網(wǎng)站建設(shè)