vue使用ECharts时的异步更新与数据加载
Posted 雅涵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue使用ECharts时的异步更新与数据加载相关的知识,希望对你有一定的参考价值。
vue使用ECharts时的异步更新与数据加载
使用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 方法生成一个你想要的图表类型,下面是在methods里初始化的一个方法,
drawLineChart() {
this.lineChartOrder = echarts.init(document.getElementById(‘lineChartOrder‘));
this.lineChartOrder.setOption({
title: {
text: ‘‘
},
tooltip: {
trigger: ‘axis‘
},
legend: {
data: [‘123‘,‘模板消息‘,‘微信新关注入口‘]
},
grid: {
left: ‘3%‘,
right: ‘4%‘,
bottom: ‘3%‘,
containLabel: true
},
xAxis: {
type: ‘category‘,
data: []
},
yAxis: {
type: ‘value‘
},
series: [
{
name: ‘用户统计‘,
type: ‘line‘,
stack: ‘总人数‘,
data: []
}
]
});
},
然后在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.fill(legends)
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)
})
以下是官网异步数据加载与更新的方法,会相对简单些。
// 异步加载数据
$.get(‘data.json‘).done(function (data) {
// 填入数据
myChart.setOption({
xAxis: {
data: data.categories
},
series: [{
// 根据名字对应到相应的系列
name: ‘销量‘,
data: data.data
}]
});
只需要将数据填充进入就可以了。
以上是关于vue使用ECharts时的异步更新与数据加载的主要内容,如果未能解决你的问题,请参考以下文章