基于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 相关文章推荐
javascript编程起步(第四课)
Jan 10 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
解析利用javascript如何判断一个数为素数
Dec 08 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
layer.confirm取消按钮绑定事件的方法
Aug 17 Javascript
JavaScript实现随机五位数验证码
Sep 27 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
vue中的.$mount('#app')手动挂载操作
Sep 02 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
php下连接mssql2005的代码
2011/01/17 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
php购物车实现方法
2015/01/03 PHP
php实现多城市切换特效
2015/08/09 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
newxtree.js代码
2007/03/13 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python易忽视知识点小结
2015/05/25 Python
python实现微信自动回复功能
2018/04/11 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Python列表切片操作实例总结
2019/02/19 Python
python实现在线翻译功能
2020/03/03 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Python安装Bs4的多种方法
2020/11/28 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
护理专业毕业生自荐信范文
2014/01/05 职场文书
升学宴主持词
2014/04/02 职场文书
大学班级学风建设方案
2014/05/01 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
财务部岗位职责
2015/02/03 职场文书
个人优缺点总结
2015/02/28 职场文书
财政局长个人总结
2015/03/04 职场文书