欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue tab切換,解決echartst圖表寬度只有100px的問題

 更新時間:2020年07月19日 13:54:04   作者:好巧.  
這篇文章主要介紹了vue tab切換,解決echartst圖表寬度只有100px的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

解決思路:直接將圖表的寬高寫死,根據(jù)實際代碼進行改寫,提供一個思路

1.將圖表放進一個div里面

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

2.定義一個方法,并在mounted視圖更新的時候執(zhí)行

<script>
export default {
 mounted() {
 this.setMyChart();
 },
 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 = getStyle(echarts,'width');
 // var echartsHeight = getStyle(echarts,'height');
 // 獲取圖表元素
 // var myChart = document.querySelector('#myChart');
 // 將父元素寬高賦值給圖表
 // myChart.style.width = echartsWidth;
 // myChart.style.height = echartsHeight;

 // 這是一個封裝好的方法,兼容IE,第一個參數(shù),element, 第二個屬性,css樣式
 // function getStyle(obj, attr) { 
 // if (obj.currentStyle) { 
 // return obj.currentStyle[attr]; 
 // } else { 
 // return document.defaultView.getComputedStyle(obj,null)[attr]; 
 // } 
 // }
 }
 }
};
</script>

3.樣式

<style scoped>
.echarts {
 width:300px;
 height:150px;
} 
</style>

如果本篇文章對你有幫助的話,很高興能夠幫助上你。

補充知識:vue項目tab切換echart圖表切換寬度縮小和圖表內(nèi)容不正確解決

代碼:

布局:

<TabButton :btnValue1="'總數(shù)'" :btnValue2="'明細'" @watchFlag="handler"></TabButton>
 <div class="it_content">
 <div class="picture" id="work" ref="work" v-show="flag===false"></div>
 <div class="picture" id="workTotal" ref="workTotal" v-show="flag===true"></div>
 </div>

處理函數(shù):

handler(flag){
 this.flag=flag;
 if(!this.flag){
 this.$nextTick(() => {
    this.drawwork(); // 明細圖
   });
 }else{
 this.$nextTick(() => {
    this.drawworkTotal(); // 總數(shù)圖
   });
 }
 },

1、解決寬度縮小的問題

本來是用vue指令的v-if,但是發(fā)現(xiàn)用v-if出現(xiàn)寬度縮小的問題。后來改用v-show。這是因為v-if指令是將Dom元素去除掉位置空間了,v-show是將Dom元素位置空間保留了,但并沒有進行渲染。v-show保留所定義的樣式,空間位置也被保留,echarts圖表的寬高依舊和之前一樣,所以不會縮小。

2、圖表內(nèi)容不正確

利用this.$nextTick(() => {})。Vue 實現(xiàn)響應(yīng)式并不是數(shù)據(jù)發(fā)生變化之后 DOM 立即變化,而是按一定的策略進行 DOM 的更新。 $nextTick 是在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào),在修改數(shù)據(jù)之后使用 $nextTick,則可以在回調(diào)中獲取更新后的 DOM。flag發(fā)生變化之后,Dom沒有立即更新了,通過 $nextTick 回調(diào)函數(shù),執(zhí)行echarts的繪畫。

nextTick的由來:   

由于VUE的數(shù)據(jù)驅(qū)動視圖更新,是異步的,即修改數(shù)據(jù)的當下,視圖不會立刻更新,而是等同一事件循環(huán)中的所有數(shù)據(jù)變化完成之后,再統(tǒng)一進行視圖更新。

nextTick的觸發(fā)時機:   

在同一事件循環(huán)中的數(shù)據(jù)變化后,DOM完成更新,立即執(zhí)行nextTick(callback)內(nèi)的回調(diào)。

結(jié)合nextTick的由來,可以推出每個事件循環(huán)中,nextTick觸發(fā)的時機:  

同一事件循環(huán)中的代碼執(zhí)行完畢 -> DOM 更新 -> nextTick callback觸發(fā)

應(yīng)用場景:   

需要在視圖更新之后,基于新的視圖進行操作。

以上這篇vue tab切換,解決echartst圖表寬度只有100px的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論