基于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 相关文章推荐
JScript中的&quot;this&quot;关键字使用方式补充材料
Mar 08 Javascript
读jQuery之一(对象的组成)
Jun 11 Javascript
JavaScript里实用的原生API汇总
May 14 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
AngularJs基于角色的前端访问控制的实现
Nov 07 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
在create-react-app中使用css modules的示例代码
Jul 31 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
vue路由分文件拆分管理详解
Aug 13 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相当简单的分页类
2008/10/02 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
python实现淘宝秒杀脚本
2020/06/23 Python
对Python _取log的几种方式小结
2019/07/25 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
生产主管岗位职责
2013/11/10 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
诚信承诺书范文
2014/03/27 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
公司年底活动方案
2014/08/17 职场文书
关于教师节的广播稿
2014/09/10 职场文书
vue 实现上传组件
2021/05/31 Vue.js
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python