echarts图表通过遍历出来的,resize()方法只生效最后一次执行的那个

echarts图表通过遍历出来的,resize()方法只生效最后一次执行的那个

1.定义一个放echarts图表的盒子

//定义一个盒子
<template>
  <div class="chartCon" ref="barLineCon" style="margin-top: 0">  </div>
</template>

2.在data里面进行echarts图表配置

blCharts: null,
      blChartsOption: {
        title: {
          text: "",
          x: "center",
          textStyle: {
            fontSize: 14
          }
        },
        xAxis: {
          name: "",
          nameTextStyle: {
            fontSize: 11,
            color: "#0c629c",
            padding: [20, 0, 0, -16]
          },
          data: [],
          axisLabel: {
            interval: 0,
            rotate: -34
          },
          axisTick: {
            show: false
          },
          axisLine: {
            show: true,
            onZero: false
          }
        },
        grid: {
          //距离
          right: "10%",
          left: "10%",
          bottom: "50px",
          top: "100px"
        },
        yAxis: [
          {
            name: "",
            show: true,
            nameTextStyle: {
              fontSize: 12,
              lineHeight: 75,
              color: "#0c629c"
            },
            splitLine: {
              show: false
            },
            axisTick: {
              show: true
            },
            axisLine: {
              show: true
            }
          }
        ],
        tooltip: {
          trigger: "axis",
          confine: true
        },
        legend: {
          right: "12%",
          top: "11%",
          textStyle: {
            color: "#000"
          },
          show: true,
          data: []
        },
        color: ["#58a1fd", "orange"],
        series: [
          {
            name: "",
            type: "bar",
            barWidth: 10,
            symbol: "circle",
            data: []
          },
          {
            name: "",
            type: "line",
            barWidth: 15,
            symbol: "circle",
            data: []
          }
        ]
      }
    };

3.在methods里面写好方法

methods: {
    blChatrsCon() {
      var self = this;
      var handleResult = res => {
        const timeDate = [];
        const data = [];
        if (res) {
          res.forEach(el => {
            timeDate.push(el.featureTime);
            data.push(el.featureValue);
          });
          if (res && res[0] && res[0].updateCycle === "daily") {
            self.deviceTimeDate = timeDate.slice(-15);
            self.deviceData = data.slice(-15);
            self.blChartsOption.xAxis.name = "日期(日)";
            self.blChartsOption.xAxis.axisLabel.interval = 1;
          } else if (res && res[0] && res[0].updateCycle === "weekly") {
            self.deviceTimeDate = timeDate.slice(-8);
            self.deviceData = data.slice(-8);
            self.blChartsOption.xAxis.name = "日期(周)";
            self.blChartsOption.xAxis.axisLabel.interval = 0;
          } else if (res && res[0] && res[0].updateCycle === "monthly") {
            self.deviceTimeDate = timeDate.slice(-12);
            self.deviceData = data.slice(-12);
            self.blChartsOption.xAxis.name = "日期(月)";
            self.blChartsOption.xAxis.axisLabel.interval = 0;
          }
          if (res && res[0] && res[0].featureChart === "line") {
            self.blChartsOption.series[1].data = self.deviceData;
            self.blChartsOption.series[0].data = [];
            self.blChartsOption.series[1].name = self.legend;
          } else if (res && res[0] && res[0].featureChart === "hist") {
            self.blChartsOption.series[0].data = self.deviceData;
            self.blChartsOption.series[1].data = [];
            self.blChartsOption.series[0].name = self.legend;
          }
        }
        self.blChartsOption.title.text = self.featureName;
        self.blChartsOption.legend.data = [self.legend];
        self.blChartsOption.xAxis.data = self.deviceTimeDate;
        self.blChartsOption.yAxis[0].name = self.yName;
        self.blCharts = self.$refs.barLineCon;
        // 初始化图表
        self.blCharts = self.$echarts.init(self.blCharts);
        // 使用刚指定的配置项和数据显示图表。
        self.blCharts.setOption(self.blChartsOption);
        // window.onresize = () => {
        //   this.blCharts.resize();
        // };
        window.addEventListener("resize", () => {
          this.blCharts.resize();
        });
      };
      var params = {
        object: {
          projectCode: self.$root.PRONAME,
          featureId: self.featureId
        }
      };
      return new Promise((resolve, reject) => {
        api
          .getFeatureValues(params)
          .then(response => {
            if (response.code == "0000") {
              let result = response.data;
              if (result) {
                handleResult(result);
              }
            }
          })
          .catch(error => {
            reject(error);
          });
      });
    }
  }

此方法需要被调用才能生效,一般会在mounted里面而不是created里面调用此方法,因为在mounted里面,DOM已经渲染完成,执行created时,DOM还没有渲染。

4.修改resize()方法

我们在用resize()方法时,如果用这种

window.onresize = () => {
	this.blCharts.resize();
};

效果是这样的,这种方法适合一个echarts图表的时候使用。
在这里插入图片描述
有两个echarts图表,但是只会生效一个

因此,我们需要用到这种方法

window.addEventListener("resize", () => {
	this.blCharts.resize();
});

这种方法的效果是这样的,放大缩小所有的echarts图表都同时变化。适合通过遍历出来的多个图表使用。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值