解决echarts图表使用v-show控制图表显示不全的问题


Posted in Javascript onJuly 19, 2020

最近做echarts图表时,因为涉及到使用开关变量控制不同图表的显示隐藏,用 v-if 时会出现没有获取到dom结构而报错,所以改用 v-show,但是 v-show 本身是结构已经存在,当数据发生变化时,结构并未重新渲染,所以会出现 echarts 图表未获取到最外层大盒子的宽度而显示一半的情况,就像下图:

解决echarts图表使用v-show控制图表显示不全的问题

还折腾了半天,其实就是当数据请求出来后,调用绘制ehcarts时图表的时候,用 Vue.nextTick(function () { // DOM 更新了 }) 主动触发一下图表,使之强制渲染就可以正常显示了

解决echarts图表使用v-show控制图表显示不全的问题

正常显示图表:

解决echarts图表使用v-show控制图表显示不全的问题

补充知识:vue中v-if和v-show对echarts图的影响

背景

前几日在做UBA项目的时候有一个页面需要用echarts图展示用户对各个节目的点播量,页面结构为左侧柱状图展示节目点播量,右侧饼图和折线图展示某个节目的用户点播分布和用户点播变化趋势(如下图),因为我们造的数据是11月26日的,而进入页面默认查询最近1天的,所以刚进来肯定是查不到数据,需要自行选择时间去查询数据。而在查数据的时候出现了echarts折线图无法正确获取宽高的情况。

解决echarts图表使用v-show控制图表显示不全的问题

解决

后来在走读代码的过程中我发现对于右侧饼图和折线图的组件我是用v-show判断的,当第一次没查到数据的时候,右边的echarts图也已经初始化了,并且由于v-show的display:none而没有拿到正确的宽高,这才出现的上图的这种现象。而饼图没有出现这种现象大概是因为饼图中没有设置grid:{containLabel:true}。后来我将v-show改成了v-if,只有当柱状图获取到了数据才加载右边的元素,就再也不会有这种问题了。

解决echarts图表使用v-show控制图表显示不全的问题

解决echarts图表使用v-show控制图表显示不全的问题

以上这篇解决echarts图表使用v-show控制图表显示不全的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网页javascript精华代码集
Jan 24 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
Dec 21 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
Aug 07 Javascript
Highcharts使用简例及异步动态读取数据
Dec 30 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
May 24 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
优雅的使用javascript递归画一棵结构树示例代码
Sep 22 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 #Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 #Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 #Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 #Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 #Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
Jul 19 #Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 #Javascript
You might like
PHP_MySQL教程-第一天
2007/03/18 PHP
PHP面向对象法则
2012/02/23 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
python分析apache访问日志脚本分享
2015/02/26 Python
Python基于DES算法加密解密实例
2015/06/03 Python
python中解析json格式文件的方法示例
2017/05/03 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Python3 读取Word文件方式
2020/02/13 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
法制报告会主持词
2014/04/02 职场文书
赡养老人协议书
2014/04/21 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
欢送会主持词
2015/07/01 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android