解决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 相关文章推荐
js 数组的for循环到底应该怎么写?
May 31 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
js运动框架_包括图片的淡入淡出效果
May 11 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
javascript中tostring()和valueof()的用法及两者的区别
Nov 16 Javascript
JavaScript构建自己的对象示例
Nov 29 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
初探js和简单隐藏效果的实例
Nov 23 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
微信小程序通过websocket实时语音识别的实现代码
Aug 19 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
解决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去除重复字的实现代码
2011/09/16 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
newxtree.js代码
2007/03/13 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
Dojo 学习要点
2010/09/03 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python中的ceil()方法使用教程
2015/05/14 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
python获取交互式ssh shell的方法
2019/02/14 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
Python的collections模块真的很好用
2021/03/01 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
建筑工地大门标语
2014/06/18 职场文书
购房委托书
2014/10/15 职场文书
护士自荐信范文
2015/03/25 职场文书