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 相关文章推荐
js 与或运算符 || &amp;&amp; 妙用
Dec 09 Javascript
无阻塞加载脚本分析[全]
Jan 20 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
javascript Event对象详解及使用示例
Nov 22 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
JQuery节点元素属性操作方法
Jun 11 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
vue中eventbus被多次触发以及踩过的坑
Dec 02 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
JS数组方法slice()用法实例分析
Jan 18 Javascript
js实现图片上传到服务器和回显
Jan 19 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 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
一个php作的文本留言本的例子(六)
2006/10/09 PHP
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
PHP 转义使用详解
2013/07/15 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
javascript回调函数详解
2018/02/06 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
web.py获取上传文件名的正确方法
2014/08/26 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
使用Python对Access读写操作
2017/03/30 Python
Python格式化输出%s和%d
2018/05/07 Python
Python常用特殊方法实例总结
2019/03/22 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
人事主管岗位职责
2014/01/30 职场文书
求职信怎么写范文
2014/05/26 职场文书
授权委托书协议书
2014/10/16 职场文书
Python中的套接字编程是什么?
2021/06/21 Python