前言
最近在学习eCharts,学习到了异步更新和数据加载这一块,觉着有必要总结一下,方法以后的时候参考学习,在开始本文之前,对eCharts不熟悉的朋友们可以参考下这篇文章://www.jb51.net/article/128790.htm 下面话不多说了,来一起看看详细的介绍吧。
使用方法
使用Echarts首先得先把Echarts.js引进来(放在文件的入口html文件里面)
<script src="public/js/echarts.common.min.js"></script>
在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器
<div id="main" style="width: 600px;height:400px;"></div>
初始化一个 echarts 实例并通过 setOption 方法生成一个你想要的图表类型,
首先先把,echarts里setOption的option,单独领出来,初始化放在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: '总人数',
      data: []
     }
    ]
   },
 
   getPieOption: {//饼图
    title: { 
     text: null 
    },
 
    tooltip: {
     tooltip: 'item',
     formatter: "{a} <br/> {b} : {c} ({d}%)"
    },
    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里调用这个方法
this.drawLineChart(),
接下来就就是数据异步加载与更新了。
以下的代码是本地的json类型,异步加载数据时只要填入数据,然后在series里根据名字对应到相应的系列就可以了。
   getOrderTotal(){//获取一段时间内的订单统计
   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: '订单统计'
      },
      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)
   })
      内容版权声明:除非注明,否则皆为本站原创文章。
