解决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 面向对象技术基础教程
Mar 03 Javascript
jquery插件制作简单示例说明
Feb 03 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
JS滚动到指定位置导航栏固定顶部
Jul 03 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
Oct 26 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
JS制作简易计算器的实例代码
Jul 04 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
纯js实现背景图片切换效果代码
2010/11/14 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
js module大战
2019/04/19 Javascript
vue实现扫码功能
2020/01/17 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
Python实现简单石头剪刀布游戏
2021/01/20 Python
PyQt5实现简易计算器
2020/05/30 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
奥地利网上书店:Weltbild
2017/07/14 全球购物
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
高级电工工作职责
2013/11/21 职场文书
教学评估实施方案
2014/03/16 职场文书
学生会部长竞聘书
2014/03/31 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
Linux安装apache服务器的配置过程
2021/11/27 Servers