基于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 MD5加密实现代码
Mar 15 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
Javascript代码在页面加载时的执行顺序介绍
May 03 Javascript
jQuery的context属性用法实例
Dec 27 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
Vue.directive自定义指令的使用详解
Mar 10 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
vue-router权限控制(简单方式)
Oct 29 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
js实现数字从零慢慢增加到指定数字示例
Nov 07 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
多文件上传的例子
2006/10/09 PHP
PHP实现网上点歌(二)
2006/10/09 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
幼儿园庆六一游园活动方案
2014/01/29 职场文书
身边的榜样活动方案
2014/08/20 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
四年级小学生评语
2014/12/26 职场文书
2015入党自荐书范文
2015/03/05 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
oracle数据库去除重复数据
2022/05/20 Oracle
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android