首页 > 语言 > JavaScript > 正文

vue在使用ECharts时的异步更新和数据加载详解

2024-05-06 15:24:13
字体:
来源:转载
供稿:网友

前言

最近在学习eCharts,学习到了异步更新和数据加载这一块,觉着有必要总结一下,方法以后的时候参考学习,在开始本文之前,对eCharts不熟悉的朋友们可以参考下这篇文章://www.Vevb.com/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)   })            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选