步骤一 生成图表的时候
初始化
vue里面的data定义一个变量来接收图标实例,
我用的是myChart:null,
异步请求的方法主要注意我使用的是若依框架前后端分离
listIssuesMoon(moon).then(res=>{
判断实例为空则实例化图表,不为空则销毁图表
if (this.myChart != null && this.myChart !== '' && this.myChart !== undefined) {
this.myChart.dispose();
this.getEcharsMeetingType(res)
})
这个是我把图表的分装为为一个函数来实现调用
val是传递的异步请求参数(相当于上面的res)
getEcharsMeetingType( val) {
let chartDom = document.getElementById( 'sex2' );
this.myChart = echarts.init( chartDom );
let option;
option = {
title: {
text: '统计会议分组数据',
left: 'center',
textStyle: {
color: '#fff',
fontSize: 18
},
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: '1%',
top: 65,
itemWidth: 60,
itemHeight: 25,
align: 'auto'
},
label: {
formatter: '{b}:\n{c}条:({d}%)',
},
series: [ {
name: 'Access From',
type: 'pie',
radius: [ '70%', '40%' ],
data: val,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
},
label: {
formatter: '{b}\n{c}条: ({d}%)',
},
labelLine: {
show: true,
length: 150,
length2: 100,
smooth: false,
minTurnAngle: 90,
maxSurfaceAngle: 90,
lineStyle: {
width: 4,
type: 'solid'
}
},
top: 30
} ]
};
option && this.myChart.setOption( option );
},
注意:在异步请求的时候需要设置定时器
(应为静态图表渲染优先于异步请求所以你会出现数据请求不到的结果)
mounted() {
var times=setTimeout(()=>{
this.getEcharsMeetingType(this.ybArr);
},1000)
},