今天項目中有個需求,就是在頁面中點擊一個圖標,彈出一個抽屜式的彈窗(彈窗是element UI的抽屜),彈窗裡邊是echarts呈現的數據,當我直接用echarts的時候,報錯dom沒有獲取到; 這就陷入疑惑,平時都是這樣獲取的,怎麼今天就不行了呢,搜索了很多答案之後才知道,在剛進入頁面的時候抽屜是 ...
今天項目中有個需求,就是在頁面中點擊一個圖標,彈出一個抽屜式的彈窗(彈窗是element UI的抽屜),彈窗裡邊是echarts呈現的數據,當我直接用echarts的時候,報錯dom沒有獲取到;
這就陷入疑惑,平時都是這樣獲取的,怎麼今天就不行了呢,搜索了很多答案之後才知道,在剛進入頁面的時候抽屜是關閉的,那echarts不進行獲取dom,當點擊抽屜出來的時候,有個opened事件,在這個事件裡邊進行echarts的初始化,執行數據;
1 <el-drawer 2 title="分析圖表" 3 :modal="false" 4 :close-on-click-modal="false" 5 :modal-append-to-body="false" 6 size="600px" 7 :visible.sync="dataVisible" 8 @opened="opens" 9 > 10 <div ref="main" style="width: 100%;height:100%;"></div> 11 </el-drawer> 12 13 export default { 14 data() { 15 return { 16 isColor: true, 17 option1: { 18 title: { 19 text: '總資產占比分析', 20 x: 'left' 21 }, 22 tooltip: { 23 trigger: 'item', 24 formatter: '{a} <br/>{b} : {c} ({d}%)' 25 }, 26 legend: { 27 orient: 'vertical', 28 right: '10%', 29 top: '35%', 30 data: ['A', 'B', 'C', 'D'] 31 }, 32 series: [ 33 { 34 name: '訪問來源', 35 type: 'pie', 36 radius: '70%', 37 center: ['25%', '60%'], 38 data: [ 39 { value: 335, name: 'A' }, 40 { value: 310, name: 'B' }, 41 { value: 234, name: 'C' }, 42 { value: 135, name: 'D' } 43 ], 44 label: { 45 normal: { 46 show: false, 47 position: 'center' 48 } 49 } 50 } 51 ] 52 }, 53 }} 54 } 55 method:{ 56 opens(){ 57 this.$nextTick(() => { 58 this.pie1() 59 }) 60 }, 61 pie1(){ 62 this.$echarts.init(this.$refs.main).setOption(this.option1) 63 } 64 } 65 66
這樣防止dom沒有渲染之前,數據先載入,主要是用了element ui彈窗的open方法,具體的為啥用這個方法,還需要研究下