基于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 相关文章推荐
最短的IE判断代码
Mar 13 Javascript
IE与FireFox中的childNodes区别
Oct 20 Javascript
深入理解JavaScript 闭包究竟是什么
Apr 12 Javascript
JavaScript地图拖动功能SpryMap的简单实现
Jul 17 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
精通JavaScript的this关键字
May 28 Javascript
node.js使用cluster实现多进程
Mar 17 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
Jun 26 Javascript
js实现简单的秒表
Jan 16 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
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php获取linux命令结果的实例
2017/03/13 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
shiro授权的实现原理
2017/09/21 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
浅析Python中signal包的使用
2015/11/13 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Django model update的多种用法介绍
2020/03/28 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
武汉东之林科技有限公司机试
2013/09/17 面试题
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
早会开场白台词大全
2015/06/01 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
css3新特性的应用示例分析
2022/03/16 HTML / CSS