最近在做大屏开发时,图表只有第一次正常显示,每次修改代码,或者切换页面再切回来,图表都不显示,需要重新刷新才可以显示。
原因:
对一个div盒子实例化echarts时,会生成一个_echrats_instance_属性,类似于id
每次切换回页面时,div盒子就会进入一个初始状态,所以就和原先已经指定了_echarts_instance_属性的盒子不匹配。
所以需要将_echarts_instance_也设置为初始状态,重新实例化,就可以了
解决:
在图表初始化之前,清除掉_echarts_instance_属性
let chardivom: any = document.getElementById(lineRef);
//每次再初始化之前,清除_echarts_instance_属性
chardivom.removeAttribute('_echarts_instance_')
let line = echarts.init(chardivom);
这样,切换页面的时候,也可以正常渲染了~
通过查阅资料,好像使用动态的id也可以实现,在每次重新渲染时id都不同(例如id拼接时间戳),这种方式我并没有动手尝试,应该也可以解决这个问题。