解决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 三种不同位置代码的写法
Oct 25 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
jQuery短信验证倒计时功能实现方法详解
May 25 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 Javascript
vue.js的提示组件
Mar 02 Javascript
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
video.js 一个页面同时播放多个视频的实例代码
Nov 27 Javascript
实例介绍JavaScript中多种组合继承
Jan 20 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数据库类
2009/05/27 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python实现list反转实例汇总
2014/11/11 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python类的实例化问题解决
2019/08/31 Python
python的json包位置及用法总结
2020/06/21 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
python wsgiref源码解析
2021/02/06 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
建筑系毕业生自我鉴定
2014/01/24 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
七年级历史教学反思
2014/02/05 职场文书
调查研究项目计划书
2014/04/29 职场文书
保护环境的标语
2014/06/09 职场文书
主要领导对照检查材料
2014/08/26 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python