关于Vue中使用eCharts响应容器大小的变化,出现Cannot read properties of undefined (reading ‘resize‘)的问题

问题重现

在Vue2中学习使用eCharts时遇到了如下问题:

使用eCharts提供的resize()方法,监听图表容器的大小并改变图表大小。
我在组件中这样写:

export default {
  name: "chart",
  data() {
    return {
      chart: null,
    };
  },
  methods: {
    initChart() {
      this.chart = echarts.init(document.getElementById("Chart1"));
      this.chart.setOption({
        // https://echarts.apache.org/zh/option.html#title.text
        // ...
      });
    },
  },
  mounted() {
    this.initChart();
    // 监听 resize 事件
    window.addEventListener("resize", function () {
      this.chart.resize();
    });
  },
};

在浏览器改变窗口后,控制台报错:

Uncaught TypeError: Cannot read properties of undefined (reading 'resize')

解决

会出现这样的情况,其实是js中的this指向问题,把事件触发时执行的函数改为箭头函数即可解决。

window.addEventListener("resize", () => {
	this.chart.resize();
});
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值