Vue解决echart在element的tab切换时显示不正确问题


Posted in Javascript onAugust 03, 2020

最近在项目中遇到了这种情况,需要在tab控件上渲染多个echart图标,然后切换查看时,发现图表的宽度不正确

原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小。所以要做的就是在页面加载时,就对图表进行初始化。

网上的解决方案大多都是监听tab的切换事件,然后再根据切换的页面重新渲染echart组件,比较麻烦。

如下是个人的解决方法:

原理:利用v-if属性,当切换至对应的tab时,设置其v-if的值为true即可,同时设置默认显示的tab

举例如下:

<el-tabs type="card" v-model="tabItem">
 <el-tab-pane name="heart">
  <span slot="label"><icon name="heart" scale="2"></icon>心率</span>
  <baseline ref="heart" :chartData="{}" v-if="'heart' === tabItem"></baseline>
 </el-tab-pane>
 <el-tab-pane name="breath">
  <span slot="label"><icon name="breath" scale="2"></icon>呼吸</span>
  <baseline ref="breath" :chartData="{}" v-if="'breath' === tabItem"></baseline>
 </el-tab-pane>
 <el-tab-pane label="体动" name="move">
  <span slot="label"><icon name="move" scale="2"></icon>体动</span>
  <baseline ref="move" :chartData="{}" v-if="'move' === tabItem"></baseline>
 </el-tab-pane>
</el-tabs>

这里默认tab为心率tab,当切换时,同一时刻只有一个v-if为true,当将其设置为true时,Vue会重新在页面渲染组件,即完成了组件渲染的步骤。

补充知识:有关el-tab-pane中echarts图遇到的问题(element中的Tabs 标签页)

在项目中,遇到了一个奇怪问题:

element中的el-tabs组件,在el-tab-pane引入echarts图标时,刷新时没有图标出现,如果将浏览器窗口缩小一点,就可以展示.

解决方案:

在echarts中加入v-if来解决 (另外,有时我们在项目中用v-show也会出现上述类似情况,将v-show改成v-if试试就可以解决)

<template>
 <el-tabs v-model="activeName" @tab-click="handleClick">
  <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
  <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
  <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
  <el-tab-pane label="定时任务补偿" name="fourth">
    <div class="echartsBox" 
      v-loading="loadingDetail"
      element-loading-spinner="el-icon-loading"
      >
      <echart-line 
      v-if="'fourth' === activeName"  //在这里加上这句话就可以解决上面的问题
      class="CurePicture"
      :category="chartData.category"
      :data="chartData.data"
      :unit="chartData.unit"
      ></echart-line>
     </div>
  </el-tab-pane>
 </el-tabs>
</template>
<script>
import echartLine from "@/components/echarts/line"
 export default {
  components: {
  echartLine
  }, 
  data() {
   return {
    activeName: 'second'
   };
  },
  methods: {
   handleClick(tab, event) {
    console.log(tab, event);
   }
  }
 };
</script>

拿走,不用谢!!!

以上这篇Vue解决echart在element的tab切换时显示不正确问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript showModalDialog 内跳转页面的问题
Nov 25 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
剖析Node.js异步编程中的回调与代码设计模式
Feb 16 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
React Form组件的实现封装杂谈
May 07 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
js实现点击上传图片并设为模糊背景
Aug 02 #Javascript
jQuery实现雪花飘落效果
Aug 02 #jQuery
原生js+canvas实现贪吃蛇效果
Aug 02 #Javascript
js+canvas实现五子棋小游戏
Aug 02 #Javascript
js实现3D旋转相册
Aug 02 #Javascript
js实现双色球效果
Aug 02 #Javascript
js实现tab栏切换效果
Aug 02 #Javascript
You might like
第1次亲密接触PHP5(1)
2006/10/09 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
js停止输出代码
2008/07/20 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
react 国际化的实现代码示例
2018/09/14 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
python 基于wx实现音乐播放
2020/11/24 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
用Python制作音乐海报
2021/01/26 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
药学职务聘任书
2014/03/29 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis