基于Echarts图表在div动态切换时不显示的解决方式


Posted in Javascript onJuly 20, 2020

简单粗暴,先上图,大概长这样:

基于Echarts图表在div动态切换时不显示的解决方式

在使用vue时有遇到像上图下拉框change事件切换div,change切完后大概会变成这个样子:

基于Echarts图表在div动态切换时不显示的解决方式

上代码:

<div class="test">
  <p class="title">
    <select v-model="selected" v-on:change="change">
     <option v-for="option in options" v-bind:value="option.value">
      {{ option.text }}
     </option>
    </select>
  </p>

  <span>{{selected}}</span>
  <div id="timesharechart" v-show="isvisible" ></div> 
  <div id="receiveDispose" v-show="!isvisible"></div> 
</div>

<script>
  export default{
    name:"test",
    data(){
      return {
        selected: 'timeshare',
        options: [
         { text: '分时警情', value: 'timeshare' },
         { text: '接警与处置', value: 'receive' }
        ],
        isvisible:true
      }
    },


    methods:{
      change:function(){
        if(this.selected == "receive"){
          this.isvisible = false;
        }else{
          this.isvisible = true;
        }
      },
</script>

这里时我们为了确定当前显示的是哪个block,所以在data中引入了“selected”,方便其他操作,其实完全可以采用change事件和v-if指令来判断 true和false的方法来切换block。

code:

change:function(){
        if(this.isvisible == true){
          this.isvisible = false;
        }else{
          this.isvisible = true;
        }
      }

这样就变成了true, false。

那么问题来了:

以上解决了change事件对div图表容器的切换显示内容,但是问题是切换后不显示图表,控制台报错:“Can't get dom width or height”,检查了遍div容器是设置了大小的,上网一查才知道是因为echarts只能在显示的容器中渲染,解决办法:在容器切换之后再渲染图表,也就是在触发切换的事件中操作echarts初始化,我是这么解决的,在调用echart.init之前,给图形dom加上对应的宽度和高度。

drawCharts(){
   // 基于准备好的dom,初始化echarts实例,dom容器中需要在调用echart.init之前,必须给图形dom加上对应的宽度和高度,不然echarts不能渲染
   document.getElementById("container").style.display = "block";
   let myChart = this.$echarts.init(document.getElementById('container'));
        // 绘制图表
        receiveChart.setOption({});
  }

其他tab,button等切换方式如出一辙。

补充知识:echarts切换后页面空白

我遇到的问题是切换后页面空白,切换第二次页面出现了echarts图。为了解决这个问题,我再页面初始化时就调用了隐藏的echarts方法,虽然解决了第一次切换没图的问题,但同时出现了第二个问题,echarts图的大小需要在改变浏览器后才跟设置大小一致。

基于Echarts图表在div动态切换时不显示的解决方式

后面通过百度说宽高必须限制死,所以我把宽度从百分比设置为600px,暂时解决这个问题。

基于Echarts图表在div动态切换时不显示的解决方式

以上这篇基于Echarts图表在div动态切换时不显示的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
读jQuery之一(对象的组成)
Jun 11 Javascript
在JavaScript并非所有的一切都是对象
Apr 11 Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
js中获取时间new Date()的全面介绍
Jun 20 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
Angular5中状态管理的实现
Sep 03 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
微信小程序基于Taro的分享图片功能实践详解
Jul 12 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
Jul 20 #Javascript
vue-router之解决addRoutes使用遇到的坑
Jul 19 #Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 #Javascript
解决vue项目router切换太慢问题
Jul 19 #Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
Jul 19 #Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 #Javascript
解决vue中el-tab-pane切换的问题
Jul 19 #Javascript
You might like
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP中session变量的销毁
2014/02/27 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
python如何实现int函数的方法示例
2018/02/19 Python
python取余运算符知识点详解
2019/06/27 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
家长会学生家长演讲稿
2013/12/29 职场文书
上课看小说检讨书
2014/02/22 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
施工员岗位职责
2015/02/10 职场文书
找规律教学反思
2016/02/23 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL