基于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 相关文章推荐
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
JQuery复制DOM节点的方法
Jun 11 Javascript
Javascript实现字数统计
Jul 03 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
JS实现数字格式千分位相互转换方法
Aug 01 Javascript
input框中的name和id的区别
Nov 16 Javascript
vue使用Axios做ajax请求详解
Jun 07 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 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对数组内元素进行随机调换的方法
2015/05/12 PHP
ThinkPHP安装和设置
2015/07/27 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python读取各种文件数据方法解析
2018/12/29 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python自定义函数def的应用详解
2020/06/03 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
python调用百度API实现人脸识别
2020/11/17 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
PHP数据运算类型都有哪些
2013/11/05 面试题
《自然之道》教学反思
2014/02/11 职场文书
现场施工员岗位职责
2014/03/10 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers