v-show,v-if切换组件echarts显示不全的问题


问题所在

显示不全的图形

 

 显示全的图形

 

 解决此问题本人暂时试过四种方法

  1、既简单又粗暴的方法:直接给图形所在的div设置一个固定宽度;

  2、利用v-if:用v-if显示页面首次进入页面组件之间的传参未能完成;

     例如:

 

   3、通过获取父元素的宽度,将其复制给子元素,

    代码例如:

<div class="echarts">
   <div id="myChart" :style="{width: '100%',height: '150px'}"></div>
</div>

 

methods: {
  setMychart () {
    //jq写法
    //获取父元素
    var echarts = $('.echarts');
    //获取父元素宽高
    var echartsWidth = echarts.outerWidth(true);
    var echartsHeight = echarts.outerHeight(true);
    //获取图表元素
    var myChart = $('#myChart');
    //将父元素宽高赋值给图表
    myChart.css('width', myChart);
    myChart.css('height', myChart);
    
    //原生js写法
    // //获取父元素
    // var echarts = document.querySelector('.echarts');
    // //获取父元素宽高
    // var echartsWidth = this.getStyle(echarts,'width');
    // var echartsHeight = this.getStyle(echarts,'height');
    // //获取图表元素
    // var myChart = document.querySelector('#myChart');
    // //将父元素宽高赋值给图表
    // myChart.style.width = echartsWidth;
    // myChart.style.height = echartsHeight;
  },
   //这是一个封装好的方法,兼容IE,第一个参数,element,第二个属性,css样式
    getStyle (obj, attr) { 
        if (obj.currentStyle) { 
            return obj.currentStyle[attr]; 
        } else { 
            return document.defaultView.getComputedStyle(obj,null)[attr]; 
         } 
     }
}

 4、v-show控制组件显示,这里我们利用控制v-show的变量;首先我们把这个变量传进子组件中来监听这个变量的变化,在给一个判断如果当这个变量等于v-show所控制的当前组件的值时触发resize()这个方法;

       

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM