vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Echarts的resize事件报错和移除windows的事件

VUE中Echarts的resize事件报错和移除windows的事件问题

作者:初入前端的小谢

这篇文章主要介绍了VUE中Echarts的resize事件报错和移除windows的事件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Echarts的resize事件报错和移除windows的事件

Echarts的resize事件报错

原因:echart的api只有在实例化之后才能调用,如果直接调用肯定会导致报错

解决方式:在调用resize的之前判断是否已经实例化

this.barchart = this.$echarts.init(dom) // 实例化Echarts对象
/****************/
if(this.barchart) { // 方法一
    this.syqchart.resize()
}
/****************/
this.syqchart && this.syqchart.resize() // 方法二
/****************/

移除windows的resize事件

一般在使用echart图表时都会去监听窗口大小的变化,以之来实现图表的重新绘制。

但是当添加了window事件之后,离开了当前页面,也依然会继续监听并且执行事件的回调函数,这样就会导致浏览器CPU的占用,页面卡顿。

解决方式:

    resizeHandler(){ // methods中定义事件处理函数(必须将处理函数提取出来,这样在移除的时候就能通过指针找到该处理函数)
        this.barchart && this.barchart.resize()
        this.linechart && this.linechart.resize()
    }
    mounted() { // 页面加载注册事件
         window.addEventListener('resize', this.resizeHandler, false)
      }
      beforeDestroy() { // 页面离开移除事件
        window.removeEventListener('resize', this.resizeHandler)
      }

ECharts的resize失效原因以及使用方法

很多朋友在开发的过程中要把ECharts图标做成自适应浏览器宽高的效果。

于是去翻看ECharts官网发现了resize方法,结果用了之后发现没用,而且根本不知道什么原因。

解决办法

不能给ECharts的容器设置固定的宽高。

示例代码

let ECharts = echarts.init(document.getElementById('wrapBox'));
//ECharts的配置项和数据
let option = {
	title: {
		text: 'demo'
	},
	tooltip: {},
	legend: {
		data: ['dataSource']
	},
	xAxis: {
		data: ['aa', 'bb', 'cc']
	},
	yAxis: {},
	series: [{
		name: 'dataSource',
		type: 'bar',
		data: [2, 5, 6],
	}]
};
//配置图表数据及配置项
ECharts.setOption(option);
//根据浏览器大小改变大小
window.onresize = () => {
	ECarts.resize();
	//如果有多个表变动在下方依次写下去就可以了
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文