前情提要

在使用vue-echarts进行可进行数据缩放的图表的渲染,并且图表数据是实时更新的。每一次更新都会刷新图表,导致用户选择的缩放范围在更新后被重置。

基于此,希望在刷新图表数据时,能够保持缩放范围。

实现过程

1. 基本思想

监听图表的dataZoom(缩放)事件,记录缩放后的start和end(缩放范围)。在刷新图表前,将上述记录的缩放范围设置到option中dataZoom的start和end值。

2. 具体实现

1)设置事件监听

<Echarts
      :style="{ height: height + 'px' }"
      :options="options"
      :auto-resize="true"
      @datazoom="onDataZoom"
 />

2)缩放事件发生时执行的方法,主要实现缩放范围的保存

onDataZoom (event) {
   if (event.batch) {
     // 在图表内使用鼠标滚轮缩放
     this.dataZoom = {
       start: event.batch[0].start,
       end: event.batch[0].end
     }
   } else {
     // 使用滑块缩放
     this.dataZoom = {
       start: event.start,
       end: event.end
     }
   }
 }

3)更新数据后执行mergeOptions(options);chart.resize();之前,作用实现将上述缩放范围设置到当前option的dataZoom中

if (options.dataZoom && this.dataZoom) {
     options.dataZoom[0].start = this.dataZoom.start;
     options.dataZoom[0].end = this.dataZoom.end;

     options.dataZoom[1].start = this.dataZoom.start;
     options.dataZoom[1].end = this.dataZoom.end;
 }

总结

若有更好的方法也可以分享到这里!

Logo

前往低代码交流专区

更多推荐