VUE中Echarts的resize事件報(bào)錯(cuò)和移除windows的事件問(wèn)題
Echarts的resize事件報(bào)錯(cuò)和移除windows的事件
Echarts的resize事件報(bào)錯(cuò)
原因:echart的api只有在實(shí)例化之后才能調(diào)用,如果直接調(diào)用肯定會(huì)導(dǎo)致報(bào)錯(cuò)
解決方式:在調(diào)用resize的之前判斷是否已經(jīng)實(shí)例化
this.barchart = this.$echarts.init(dom) // 實(shí)例化Echarts對(duì)象 /****************/ if(this.barchart) { // 方法一 ?? ?this.syqchart.resize() } /****************/ this.syqchart && this.syqchart.resize() // 方法二 /****************/
移除windows的resize事件
一般在使用echart圖表時(shí)都會(huì)去監(jiān)聽(tīng)窗口大小的變化,以之來(lái)實(shí)現(xiàn)圖表的重新繪制。
但是當(dāng)添加了window事件之后,離開(kāi)了當(dāng)前頁(yè)面,也依然會(huì)繼續(xù)監(jiān)聽(tīng)并且執(zhí)行事件的回調(diào)函數(shù),這樣就會(huì)導(dǎo)致瀏覽器CPU的占用,頁(yè)面卡頓。
解決方式:
? ? resizeHandler(){ // methods中定義事件處理函數(shù)(必須將處理函數(shù)提取出來(lái),這樣在移除的時(shí)候就能通過(guò)指針找到該處理函數(shù)) ? ? ?? ?this.barchart && this.barchart.resize() ? ? ?? ?this.linechart && this.linechart.resize() ? ? } ? ? mounted() { // 頁(yè)面加載注冊(cè)事件 ? ? ??? ?window.addEventListener('resize', this.resizeHandler, false) ? ?? ?} ? ?? ?beforeDestroy() { // 頁(yè)面離開(kāi)移除事件 ? ? ?? ?window.removeEventListener('resize', this.resizeHandler) ? ?? ?}
ECharts的resize失效原因以及使用方法
很多朋友在開(kāi)發(fā)的過(guò)程中要把ECharts圖標(biāo)做成自適應(yīng)瀏覽器寬高的效果。
于是去翻看ECharts官網(wǎng)發(fā)現(xiàn)了resize方法,結(jié)果用了之后發(fā)現(xiàn)沒(méi)用,而且根本不知道什么原因。
解決辦法
不能給ECharts的容器設(shè)置固定的寬高。
- 寬度要寫(xiě)百分比
- 高度要寫(xiě)vh
- 然后再搭配resize方法才可以實(shí)現(xiàn)根據(jù)瀏覽器大小而改變大小的功能
示例代碼
let ECharts = echarts.init(document.getElementById('wrapBox')); //ECharts的配置項(xiàng)和數(shù)據(jù) let option = { title: { text: 'demo' }, tooltip: {}, legend: { data: ['dataSource'] }, xAxis: { data: ['aa', 'bb', 'cc'] }, yAxis: {}, series: [{ name: 'dataSource', type: 'bar', data: [2, 5, 6], }] }; //配置圖表數(shù)據(jù)及配置項(xiàng) ECharts.setOption(option); //根據(jù)瀏覽器大小改變大小 window.onresize = () => { ECarts.resize(); //如果有多個(gè)表變動(dòng)在下方依次寫(xiě)下去就可以了 }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用vueJs實(shí)現(xiàn)圖片輪播實(shí)例代碼
本篇文章主要介紹了利用vueJs實(shí)現(xiàn)圖片輪播實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06vue-admin-box第一步npm?install時(shí)報(bào)錯(cuò)的處理
這篇文章主要介紹了vue-admin-box第一步npm?install時(shí)報(bào)錯(cuò)的處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue.js實(shí)現(xiàn)文件上傳和進(jìn)度條顯示功能
在現(xiàn)代Web開(kāi)發(fā)中,文件上傳是一個(gè)常見(jiàn)而重要的需求,無(wú)論是在用戶上傳頭像、文檔或者其他類型的文件時(shí),良好的用戶體驗(yàn)都是至關(guān)重要的,在這篇博客中,我們將介紹如何使用Vue.js來(lái)實(shí)現(xiàn)文件上傳功能,同時(shí)顯示上傳進(jìn)度條,需要的朋友可以參考下2024-11-11axios中如何進(jìn)行同步請(qǐng)求(async+await)
這篇文章主要介紹了axios中如何進(jìn)行同步請(qǐng)求(async+await),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09VueJs使用Amaze ui調(diào)整列表和內(nèi)容頁(yè)面
這篇文章主要介紹了VueJs 填坑日記之使用Amaze ui調(diào)整列表和內(nèi)容頁(yè)面,需要的朋友可以參考下2017-11-11vue項(xiàng)目用后端返回的文件流實(shí)現(xiàn)docx和pdf文件預(yù)覽
本文主要介紹了vue項(xiàng)目用后端返回的文件流實(shí)現(xiàn)docx和pdf文件預(yù)覽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04vue中vee validate表單校驗(yàn)的幾種基本使用
這篇文章主要介紹了vee-validate表單校驗(yàn)的基本使用,需要的朋友可以參考下2018-06-06vue+jquery+lodash實(shí)現(xiàn)滑動(dòng)時(shí)頂部懸浮固定效果
這篇文章主要為大家詳細(xì)介紹了vue+jquery+lodash實(shí)現(xiàn)滑動(dòng)時(shí)頂部懸浮固定效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04