解决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中prototype的用法实例分析
Mar 19 Javascript
jquery插件qrcode在线生成二维码
Apr 26 Javascript
javascript实现全局匹配并替换的方法
Apr 27 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
如何解决vue与传统jquery插件冲突
Mar 20 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
小程序登录态管理的方法示例
Nov 13 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
Python程序语言快速上手教程
2012/07/18 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
深入学习python的yield和generator
2016/03/10 Python
Python的IDEL增加清屏功能实例
2017/06/19 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python中p-value的实现方式
2019/12/16 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python实现视频压缩功能
2020/12/18 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
教代会闭幕词
2015/01/28 职场文书
钢琴师观后感
2015/06/12 职场文书
办公用品管理制度
2015/08/04 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书