<template>
  <div class="EchartsBox">
    <div :id="'echarts' + id" :style="{ width: '100%', height: '100%' }"></div>
  </div>
</template>

<script>
import * as echarts from "echarts";
export default {
  name: "EchartsBox",
  props: {
    id: {
      type: Number,
      default: 0,
    },
    option: {
      type: Object,
      default: () => {},
    },
  },
  data() {
    return {
      myChart: null,
    };
  },
  watch: {
    option: {
      handler() {
        this.myChart.setOption(this.option);
      },
      deep: true,
    },
  },
  mounted() {
    this.initEcharts();
  },
  methods: {
    initEcharts() {
      this.myChart = echarts.init(
        document.getElementById(`echarts${this.id}`),
        "dark"
      );
      this.myChart.setOption(this.option);
      window.addEventListener("resize", () => {
        this.myChart.resize();
      });
    },
  },
};
</script>

<style scoped lang="scss">
.EchartsBox {
  width: 100%;
  height: 100%;
}
</style>

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐