echarts在vue里面封装组件

echarts在vue里面封装组件

<!-- 柱状图组件 -->
<template>
  <div style="width: 100%; height: 100%" :id="chartid"></div>
</template>
    
<script>
export default {
  props: {
    //图表id
    chartid: {
      type: String,
    },
    yname: {
      type: String,
      default: "数量",
    },
    XAxisdata: {
      type: Array,
      default: [],
    },
    seriesData: {
      type: Array,
      default: [],
    },
  },
  data() {
    return {
      columnarEcharts: {},
    };
  },
  watch: {
    //检测数据变化更新图表
    seriesData: {
      handler(newVal, oldVal) {
        this.columnarEcharts.setOption(this.option, true);
      },
      deep: true,
    },
    option: {
      handler(newVal, oldVal) {
        this.$nextTick(() => {
          if (this.columnarEcharts) {
            this.columnarEcharts.setOption(this.option, true);
          }
        });
      },
      deep: true,
    },
  },
  computed: {
    option() {
      return {
        xAxis: {
          type: "category",
          data: this.XAxisdata,
        },
        tooltip: {
          trigger: "item",
        },
        dataZoom: [
          {
            type: "slider",
            realtime: false,
            start: 0,
            end: 100,
            bottom: 0,
            height: 20,
          },
          {
            type: "inside",
            start: 0,
            end: 100,
            bottom: 0,
            height: 20,
          },
        ],
        yAxis: {
          type: "value",
          name: this.yname,
        },
        series: this.seriesData,
      };
    },
  },
  mounted() {
    let that = this;
    this.$nextTick(() => {
            this.columnarEcharts = this.$echarts.init(document.getElementById(that.chartid));
            this.columnarEcharts.setOption(this.option);
            window.addEventListener('resize', function () {
              that.columnarEcharts.resize();
            });
        });
  },
};
</script>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值