解决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 相关文章推荐
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
多个$(document).ready()的执行顺序实例分析
Jul 26 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
May 18 Javascript
JavaScript核心语法总结(推荐)
Jun 02 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 Javascript
关于vue面试题汇总
Mar 20 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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
获得Google PR值的PHP代码
2007/01/28 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
javascript数组去重小结
2016/03/07 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
教育技术职业规划范文
2014/03/04 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
解除处分决定书
2015/06/25 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
python实现手机推送 代码也就10行左右
2022/04/12 Python
SQL Server删除表中的重复数据
2022/05/25 SQL Server