vue Echarts自适应浏览器resize报错:Cannot read property 'resize' of undefined

Echarts自适应浏览器resize报错:Cannot read property 'resize' of undefined

1.问题

今天在做Echarts自适应浏览器时,发现拖动窗口进行缩放时,会出现一个问题:Cannot read property ‘resize’ of undefined。

Echarts插件绘制的柱状图正常情况下页面截图:
在这里插入图片描述
但是当我拖动浏览器窗口的边框进行缩放时会报错:
在这里插入图片描述
相关代码如下:

    mounted() {
      //在mounted生命周期函数中实例化echarts对象
      this.drawHistogarm();
    },
    methods:{
      drawHistogarm(){
        //初始化echarts实例
        let histogram = this.$echarts.init(document.getElementById('histogramChart'))
        let option = {
          title: {
            text: '柱状图示例',
            left: 'center'
          },
          tooltip: {
            trigger:'axis'
          },
          xAxis: {
            type: 'category',
            data: ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
          },
          yAxis: {
            type: 'value'
          },
          series: [{
            name: '数量',
            type: 'bar',
            barWidth: '50%',//设置柱子的宽度
            data: [204,106,190,230,100,170,201]
          }]
        };
        histogram.setOption(option);
        window.addEventListener("resize", () => {
          this.histogram.resize();
        })
      }
    }

所以,应该是缩放时自适应那块的代码出错了。查找之后发现,原来问题出在this上。

代码中两次用到了this,第一次是在mounted生命周期函数中实例化echarts对象,第二次是在window监听事件中监听窗口尺寸的自适应,调试发现:
在这里插入图片描述
在这里插入图片描述
第一次this是指向VueComponent组件,也就是柱状图的div;

第二次this则是指向监听对象,也就是window,但是在这里需要的是在window的监听对象中对柱状图div进行自适应操作。

2.解决办法

所以,去掉this,修改代码如下:

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

3.成果

Chrome浏览器正常尺寸时,右上角显示当前窗口大小为:1680px * 865px,Echarts柱状图如下:
在这里插入图片描述
当浏览器缩小时,如下图所示,右上角显示当前窗口大小为:962px * 805px,可以看到,Echarts柱状图也跟着变小了,实现了自适应的效果:
在这里插入图片描述

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值