在使用Echarts的饼图时,当时做法是在图例数小于8时显示全部的图例,在大于8的时候显示前8个图例。于是用了两种不同的方式处理。导致出现切换时间后图例不显示的情况。
错误过程:
在进行图例生成时采用了两种不同的方式:
①如果data没有被指定,会自动从当前系列中获取
②如果指定了data,则使用指定的data。
我的做法是在图例数少于8的时候自动获取,图例数大于8的时候自己将前8个图例放入data。
看起来是没有问题的,但是问题在于:
在切换数据周期时:从图例数大于8的月份切换到图例数小于8的月份时图例部分消失。
错误分析:
在切换数据周期时,只是将图例的data设置为了[],但事实上没有delete掉data,所以组件认为data存在。
改进:
在判断图例数小于8之后,delete option.legend.data
- 通过log看,legend.data确实没有了。但是图例还是有问题。
再次改进
于是想到了之前用过的echarts的一个函数:dispose()。
在切换页面之前,调用dispose()把echarts生成的图卸载掉。
于是在图例数切换到小于8个的时候:
delete option.legend.data
mychart.dispose()
改进之后在数据切换后dispose掉原来的ECharts,最后在生成新的E Charts就可以显示了。