解决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 相关文章推荐
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
JS实现黑色大气的二级导航菜单效果
Sep 18 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
获取url中用&隔开的参数实例(分享)
May 28 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 Javascript
详解ES6 Promise的生命周期和创建
Aug 18 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
nodeJS微信分享
2017/12/20 NodeJs
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Django的models模型的具体使用
2019/07/15 Python
python实现按行分割文件
2019/07/22 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
财政专业求职信范文
2014/02/19 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
爱我中华教学反思
2014/04/28 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
运动会新闻稿
2015/07/17 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书