echart4.0 share dataset 中为什么要在setTimeout中执行setOption?
问题描述
在vue中使用echart4.0官方示例中share dataset时,通过监听updateAxisPointer事件来更新上面的饼图,但是发现有时候,饼图的label数据更新了,但是图却还没有重绘,可是鼠标移到下面柱图的区域外时,饼图又会重绘好。我在官方示例的代码里,看到有用过setTimeout函数,不知道这是不是问题的关键。
问题出现的环境背景及自己尝试过哪些方法
vue2.5.16 echart4.1.0
这里我是把echart封装成一个组件,然后再在其他的地方进行调用,如下的echart.vue和dashboard-barpie.vue
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
// echart.vue
this.myChart.on("updateAxisPointer", event => {
var xAxisInfo = event.axesInfo[0];
if (xAxisInfo) {
this.$emit("change-barpie", xAxisInfo);
}
});
// dashboard-barpie.vue
<echart :options="option" :chartID="chartID" ref="dashboard_barpie_chart" :height="height" v-on:change-barpie="changeBarpie" :chartType="'dashboard-barpie'"></echart>
changeBarpie(xAxisInfo) {
var dimension = xAxisInfo.value + 1;
this.$refs.dashboard_barpie_chart.setOption({
series: {
id: "pie",
label: {
formatter: "{b}: {@[" + dimension + "]} ({d}%)"
},
encode: {
value: dimension,
tooltip: dimension
}
}
});
}
你期待的结果是什么?实际看到的错误信息又是什么?
这是鼠标悬浮在中间那个柱形区域时,饼图的label数据有更新,但是饼图明显没有重绘
这个是当鼠标移出柱形区域时,饼图又重新绘制
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
console.log('update event ....')
你就能看到,无数次无数次得对触发以及触发后对pie得重绘setTimeout
我估计原作者得目的是对updateAxisPointer
事件进行处理(比如1秒内触发了100次,但是只执行一次回调处理,重绘一次pie,而不是触发多少次,重绘多少次),但是他代码并没有写完,造成了你得这种错觉。当然仅限个人理解。