<template>
  <el-carousel @change="handleCarouselChange">
    <el-carousel-item v-for="(item, index) in chartData" :key="index">
      <div ref="chartContainer" :id="'chart'+index" class="chart-container"></div>
    </el-carousel-item>
  </el-carousel>
</template>
<script>
import * as echarts from 'echarts';

export default {
  data() {
    return {
      chartData: [
        {xAxisData: ['Jan', 'Feb', 'Mar', 'Apr', 'May'], seriesData: [120, 200, 150, 80, 70]},
        {xAxisData: ['Feb', 'Mar', 'Apr', 'May', 'Jun'], seriesData: [200, 150, 80, 70, 90]},
        {xAxisData: ['Mar', 'Apr', 'May', 'Jun', 'Jul'], seriesData: [150, 80, 70, 90, 120]},
        {xAxisData: ['Apr', 'May', 'Jun', 'Jul', 'Aug'], seriesData: [80, 70, 90, 120, 200]},
      ],
      currentIndex: 0,
    };
  },
  mounted() {
    this.initCharts();
  },
  methods: {
    initCharts() {
      this.chartData.forEach((item, index) => {
        const chart = echarts.init(this.$refs['chartContainer'][index]);
        chart.setOption({
          xAxis: {
            type: 'category',
            data: item.xAxisData,
          },
          series: [{
            type: 'line',
            data: item.seriesData,
          }]
        });
      });
    },
    handleCarouselChange(index) {
      this.currentIndex = index;
    },
  },
  computed: {
    currentXAxisData() {
      return this.chartData[this.currentIndex].xAxisData;
    },
  },
  watch: {
    currentXAxisData() {
      this.chartData.forEach((item, index) => {
        const chart = echarts.init(this.$refs['chartContainer'][index]);
        chart.setOption({
          xAxis: {
            type: 'category',
            data: item.xAxisData,
          },
        });
      });
    },
  },
};
</script>
<style scoped>
.chart-container {
  height: 300px;
}
</style>
<p>在这个示例中,我们使用了一个chartData数组来存储多个Echarts图表的数据,每个数据对象包括一个xAxisData属性和一个seriesData属性,分别用于存储X轴和系列数据。</p>
<p>在mounted钩子函数中,我们调用了initCharts方法来初始化所有的Echarts图表。</p>
<p>在handleCarouselChange方法中,我们记录了当前轮播的索引值,触发了computed属性currentXAxisData的更新。</p>
<p>在currentXAxisData计算属性中,我们根据currentIndex来获取当前轮播的Echarts图表的X轴数据。</p>
<p>在watch监听器中,我们监听了currentXAxisData的变化,每次变化时都重新设置所有Echarts图表的X轴数据。</p>
<p>这样,我们就实现了El-Carousel作用于Echarts图表轮播并更新X轴的效果。</p>

原文地址: http://www.cveoy.top/t/topic/f2QQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录