vue 單個頁面中引用多個echarts實現自適應

在vue某個數據展示頁面,使用了多個echarts圖表,使用onresize方法只能夠讓最後一個圖表隨着窗口大小自適應

在解決問題的過程中發現的一些問題

一、第一種

開始我在每個圖表組件的方法裏面定義myChart,如下


methods:{
    setchart(){
       const option{

             }
        let myChart = this.$echarts.init(document.getElementById('r-biao1'));
				myChart.setOption(option);
				window.onresize = function() {  
					myChart.resize();
				};
    }

}

上面的代碼只有最後一個圖表會刷新,將window.onresize改爲下面的代碼

window.addEventListener("resize",function(){
				    myChart.resize();
				})

正確代碼

methods:{
    setchart(){
       const option{

             }
        let myChart = this.$echarts.init(document.getElementById('r-biao1'));
				myChart.setOption(option);
				window.addEventListener("resize",function(){
				    myChart.resize();
				})
    }

}

二、第二種

我把mychart在data裏定義,用this調用

data() {
			return {
				myChart: null,
			}
		},

methods:{
    setchart(){
       const option{

             }
		this.myChart = this.$echarts.init(document.getElementById('r-biao3'));
		this.myChart.setOption(option);
		window.addEventListener("resize",function(){
			this.myChart.resize();
		})
    }

}

這個也是最後一個可自適應,最後發現是this的問題

正確代碼

data() {
			return {
				myChart: null,
			}
		},

methods:{
    setchart(){
       const option{

             }
        const that=this
		this.myChart = this.$echarts.init(document.getElementById('r-biao3'));
		this.myChart.setOption(option);
		window.addEventListener("resize",function(){
			that.myChart.resize();
		})
    }

}

以上是我嘗試出來可行的方法以及問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章