Vvue Element组件Tabs中使用Echarts折线图出现宽度问题

1、出现的问题

    vue项目 Element UI组件Tabs分页中插入Echarts绘制折线图图表,进入折线图tabs页面折线图宽度只有100px;但是在css定义中折线图宽度是100%;当浏览器窗口大小发生改变时echarts折线图宽度回复正常;

2、为什么会出现这样的问题

    Echarts在页面未渲染时就先页面一步加载了;由于图表在tabs标签页里,跳转页面没有选中tabs标签,没有选中的tabs标签是没有内部元素宽高的;Echarts会在获取不到DOM容器宽高的情况下使用默认的大小(width:100px;)创建图表;

3、解决问题

    调整echarts初始化加载顺序;错误方法:是把Echarts初始化事件放入mounted()里完成初始化;正确方法:在tabs标签事件

Tabs Events

事件名称说明回调参数
tab-clicktab 被选中时触发被选中的标签 tab 实例

中对应的标签内调用Echarts初始化事件

// 标签页tab点击事件

      tabClick(tab, event){

        if(this.activeName=="fourth"){//当tab标签为fourth时

          this.handelSelectLevCapByResId();

          window.addEventListener("resize",()=>{//浏览器窗口的缩放监听

            this.pieChart1.resize();

        })

        }

      },

//获取对应Echarts折线图数据

      handelSelectLevCapByResId(){

        selectLevCapByResId(this.reservoir).then(res=>{

          this.handelChaets();

          this.handelChaets2();

          let data = res.data.data;

          this.tableData=data.levCapAreaList;

          let xData=data.capData.line;

          let seriesData=data.waterLevelData.line;

          this.pieChart1.setOption({

            xAxis: {

              data:xData

            },

            series: [

              {

                type: 'line',

                symbol: 'none',

                smooth: true,

                data:seriesData,

              }

            ],

          });

          let areaData=data.areaData.line;

          this.pieChart2.setOption({

            xAxis: {

              data:areaData

            },

            series: [

              {

                type: 'line',

                symbol: 'none',

                smooth: true,

                data:seriesData,

              }

            ],

          })

        })

      },

// 第一个折线图

      handelChaets(){

        this.pieChart1=echarts.init(document.getElementById('pieChart'));

        this.pieChart1.setOption(this.chartOption);

        window.addEventListener("resize",()=>{

          this.pieChart1.resize();

        })

      },

      // 第二个折线图

      handelChaets2(){

        this.pieChart2=echarts.init(document.getElementById('pieChart2'));

        this.pieChart2.setOption(this.chartOption2);

        window.addEventListener("resize",()=>{

          this.pieChart2.resize();

        })

      },

    },

  };

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值