<template>
  <el-carousel :interval="5000">
    <div v-for="(chart, index) in charts" :key="index" style="width: 100%; height: 300px;">
      <div ref="chartContainer" :id="'chartContainer'+index" style="width: 100%; height: 100%;"></div>
    </div>
  </el-carousel>
</template>
<script>
import echarts from 'echarts';

export default {
  data() {
    return {
      charts: [], // 存储echarts实例的数组
      chartData: [ // 图表数据
        { name: 'chart1', data: [1, 2, 3, 4, 5] },
        { name: 'chart2', data: [5, 4, 3, 2, 1] },
        { name: 'chart3', data: [2, 4, 6, 8, 10] }
      ],
      currentIndex: 0 // 当前显示的图表索引
    };
  },
  created() {
    // 初始化echarts实例并存储到数组中
    this.chartData.forEach((data, index) => {
      const chart = echarts.init(this.$refs['chartContainer'][index]);
      chart.setOption({
        xAxis: {
          type: 'category',
          data: ['A', 'B', 'C', 'D', 'E']
        },
        yAxis: {
          type: 'value'
        },
        series: [{
          data: data.data,
          type: 'line'
        }]
      });
      this.charts.push(chart);
    });
  },
  mounted() {
    // 定时切换图表显示
    setInterval(() => {
      this.currentIndex = (this.currentIndex + 1) % this.charts.length;
      const chart = this.charts[this.currentIndex];
      chart.setOption({
        series: [{
          data: this.chartData[this.currentIndex].data
        }]
      });
      this.$nextTick(() => {
        chart.resize();
      });
    }, 5000);
  },
  beforeDestroy() {
    // 清除定时器并销毁echarts实例
    clearInterval(this.timer);
    this.charts.forEach(chart => {
      chart.dispose();
    });
  }
};
</script>
Vue Element UI Carousel: 轮播 Echarts 图表

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

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