解决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进行跨域请求
Jan 25 Javascript
jquery uaMatch源代码
Feb 14 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
JS实现的仿QQ空间图片弹出效果代码
Feb 23 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
JavaScript 作用域实例分析
Oct 02 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
Vue父子传递实例讲解
2020/02/14 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python读写LMDB文件的方法
2018/07/02 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
python的turtle库使用详解
2019/05/10 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
单位在职证明范本
2014/01/09 职场文书
工程管理英文求职信
2014/03/18 职场文书
大班开学家长寄语
2014/04/04 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python