解决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 相关文章推荐
jquery选择器原理介绍($()使用方法)
Mar 25 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
jQuery中extend函数详解
Feb 13 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
vue 使用lodash实现对象数组深拷贝操作
Sep 10 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
自己做矿石收音机
2021/03/02 无线电
使用php+xslt在windows平台上
2006/10/09 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
js 格式化时间日期函数小结
2010/03/20 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python守护线程用法实例
2017/06/23 Python
python中比较两个列表的实例方法
2019/07/04 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
用python读取xlsx文件
2020/12/17 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
趣味比赛活动方案
2014/02/15 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript