最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue.js集成echarts時遇到的一些問題總結(jié)

 更新時間:2021年04月13日 10:38:46   作者:beetlex  
這篇文章主要給大家總結(jié)介紹了關(guān)于vue.js集成echarts遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在做Beetlex的數(shù)據(jù)分析平臺,在開發(fā)這個產(chǎn)品過程中涉及到大量的數(shù)據(jù)圖表展示功能;由于產(chǎn)品前端使用的是vuejs開發(fā),所以在集成echarts或多或少會碰到一些問題,在這里主要講解一下碰到的問題和解決方法。

在講解之前先分享一下實際使用效果。具體可以查看 http://data.beetlex.io

控件ID

 在vuejs中往往會對常用的功能進行組件封裝,同樣為了讓不同圖表復(fù)用所以也封裝成組件來使用。在這個封裝過程存在一個問題就是圖表元素DIV的ID問題,所以組件建構(gòu)建圖表DIV的ID也必須確保唯一性??梢酝ㄟ^封裝一個簡單的函數(shù)來生成ID

Vue.prototype.$getID = function () {
    page.controlid = page.controlid + 1;
    return page.controlid;
};

通過這個方法來獲取動態(tài)的元素ID

mounted(){
     this.ChatID = "chat_" + this.$getID();
}
<div :id="ChatID">
​
</div>

初始化問題

在使用Vuejs時很多時候會在mounted()方法中進行一些實始化,但如果在這里實始化echarts就需要注意,畢竟mounted并不代表所有元素被構(gòu)建,這時候會導(dǎo)致獲取元素失敗無法對echarts進行初始化操作。所以需要把echarts放到一個方法中根據(jù)情況手動調(diào)用進行,或者延時一下調(diào)用初始化;為了方便選擇使用了setTimeout來初始化。

setTimeout(() => {
    var dom = document.getElementById(this.ChatID);
    this.Chat = echarts.init(dom, 'macarons');
    this.Chat.setOption(this.ChatOption, true);
}, 300);

顯示切換問題

如果需要對圖表進行一個顯示切換,最好不要用v-if這樣的語法,因為這樣的語法是不會在DOM中構(gòu)建相關(guān)元素,引起echarts創(chuàng)建Canvas元素問題導(dǎo)致無法正常工作。最好的辦法是通過切換Css的方式來進行顯示切換,確保已構(gòu)建的DOM元素內(nèi)容沒有被更改。

自適應(yīng)布局

很多時候窗體的大變化和組件切換后會導(dǎo)致echarts無法適應(yīng)當(dāng)前布局,碰到這情況需要手動調(diào)用echarts的resize方法來進行重置顯示布局。實際上在SPA應(yīng)用中情況復(fù)雜很多,全屏顯示,窗體要換,再加組件化后多層次嵌套,所以難以確定echarts使用在什么地方。為了滿足不同情況的需求,需要一個公共的行為來觸發(fā)這些變更。

var __resizeHandlers = [];
function __addResizeHandler(handler) {
    __resizeHandlers.push(handler);
};
function __resize() {
    setTimeout(() => {
        __resizeHandlers.forEach(v => {
            v();
        });
    }, 100);
}
window.onresize = function () {
    __resizeHandlers.forEach(v => {
        v();
    });
};
Vue.prototype.$addResize = function (handler) {
    __addResizeHandler(handler);
};
Vue.prototype.$resize = function () {
    __resize();
};

實現(xiàn)一個簡單的resize注冊和調(diào)用機制即可,在使用echarts的組件定義以下代碼完美解決

this.$addResize(r => {
     if (this.Chat)
            this.Chat.resize();
});

附:Echarts下載使用

你可以通過以下幾種方式獲取 ECharts。

1,從 Apache ECharts (incubating) 官網(wǎng)下載界面 獲取官方源碼包后構(gòu)建。

2,在 ECharts 的 GitHub 獲取。

3,通過 npm 獲取 echarts,npm install echarts --save,

4,通過 jsDelivr 等 CDN 引入

出現(xiàn)如下圖則成功。


引入

(下載完的前提)

1,通過標簽方式直接引入構(gòu)建好的 echarts 文件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <!-- 引入 ECharts 文件 -->
    <script src="echarts.min.js"></script>
</head>
</html>

2,全局引用

在vue的main.js中

// 引入echarts
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

3,直接在組件內(nèi)引入echarts,

(如果你想在其他組件內(nèi)用echarts,則必須重新引入)

import echarts from “echarts”;

總結(jié)

到此這篇關(guān)于vue.js集成echarts遇到問題的文章就介紹到這了,更多相關(guān)vue.js集成echarts問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中Axios配置不同的baseURL,請求不同的域名接口方式

    Vue中Axios配置不同的baseURL,請求不同的域名接口方式

    這篇文章主要介紹了Vue中Axios配置不同的baseURL,請求不同的域名接口方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 利用Vue Router實現(xiàn)單頁面應(yīng)用(SPA)的代碼示例

    利用Vue Router實現(xiàn)單頁面應(yīng)用(SPA)的代碼示例

    在當(dāng)今前端開發(fā)中,單頁面應(yīng)用(SPA)已成為一種主流的開發(fā)模式,它通過在用戶與網(wǎng)頁之間提供更流暢的交互體驗,來改變傳統(tǒng)多頁面應(yīng)用的思維,本文將詳細介紹如何利用 Vue.js 中的 Vue Router 來實現(xiàn)一個簡單的單頁面應(yīng)用,需要的朋友可以參考下
    2025-01-01
  • 淺談Vue數(shù)據(jù)響應(yīng)思路之?dāng)?shù)組

    淺談Vue數(shù)據(jù)響應(yīng)思路之?dāng)?shù)組

    這篇文章主要介紹了淺談Vue數(shù)據(jù)響應(yīng)思路之?dāng)?shù)組,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue路由傳參的三種方式實例詳解

    Vue路由傳參的三種方式實例詳解

    vue路由傳參的使用場景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時,攜帶參數(shù)跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Vue路由傳參的三種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Vue使用html2canvas和jspdf實現(xiàn)PDF文件導(dǎo)出

    Vue使用html2canvas和jspdf實現(xiàn)PDF文件導(dǎo)出

    這篇文章主要為大家詳細介紹了Vue如何使用html2canvas和jspdf實現(xiàn)PDF文件導(dǎo)出功能并設(shè)置頁面大小及方向,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • vue3父子組件通信之子組件修改父組件傳過來的值

    vue3父子組件通信之子組件修改父組件傳過來的值

    這篇文章主要介紹了vue3父子組件通信之子組件修改父組件傳過來的值,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Vue用v-for給循環(huán)標簽自身屬性添加屬性值的方法

    Vue用v-for給循環(huán)標簽自身屬性添加屬性值的方法

    這篇文章主要介紹了Vue用v-for給循環(huán)標簽自身屬性添加屬性值的方法,文中大家給大家列舉了三種方法 ,需要的朋友可以參考下
    2018-10-10
  • 搭建element-ui的Vue前端工程操作實例

    搭建element-ui的Vue前端工程操作實例

    下面小編就為大家分享一篇搭建element-ui的Vue前端工程操作實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue 無限滾動加載指令實現(xiàn)方法

    Vue 無限滾動加載指令實現(xiàn)方法

    這篇文章主要介紹了Vue 無限滾動加載指令的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • vue?中使用?bimface詳情

    vue?中使用?bimface詳情

    這篇文章主要介紹了vue?中使用?bimface詳情,分別有安裝?vue?腳手架、創(chuàng)建項目、引入?bimface?響應(yīng)的文件、修改?App.vue?文件,實現(xiàn)頁面渲染等步驟,需要的小伙伴可以參考一下
    2021-12-12

最新評論

武定县| 曲水县| 阳西县| 台中县| 界首市| 分宜县| 宜章县| 安远县| 衡水市| 观塘区| 正宁县| 三穗县| 清丰县| 嵊州市| 磐安县| 博乐市| 修武县| 通化县| 龙里县| 嘉荫县| 屯门区| 夏邑县| 北京市| 宣恩县| 耿马| 桑植县| 阳泉市| 麻栗坡县| 娄底市| 新和县| 天长市| 北流市| 河间市| 建始县| 瓮安县| 积石山| 富裕县| 虞城县| 常德市| 西畴县| 工布江达县|