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

Vue-cli3中如何引入ECharts并實現(xiàn)自適應(yīng)

 更新時間:2022年06月22日 16:19:17   作者:高先生的貓  
這篇文章主要介紹了Vue-cli3中如何引入ECharts并實現(xiàn)自適應(yīng),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

如何引入ECharts并實現(xiàn)自適應(yīng)

效果

1. 安裝echarts

npm install echarts

2. components/echarts/index.vue

<template>
? <div :class="className" :style="{height:height,width:width}" />
</template>
<script>
? import echarts from 'echarts'
? require('echarts/theme/macarons') // echarts theme
? import {debounce} from '@/utlis/index.js'
? const animationDuration = 6000
? export default {
? ? props: {
? ? ? className: {
? ? ? ? type: String,
? ? ? ? default: 'chart'
? ? ? },
? ? ? width: {
? ? ? ? type: String,
? ? ? ? default: '100%'
? ? ? },
? ? ? height: {
? ? ? ? type: String,
? ? ? ? default: '100%'
? ? ? },
? ? ? // 數(shù)據(jù)源
? ? ? echartsData: {
? ? ? ? type: Object,
? ? ? ? default: {}
? ? ? },
? ? },
? ? data() {
? ? ? return {
? ? ? ? chart: null,
? ? ? }
? ? },
? ? watch: {
? ? },
? ? //初始化
? ? mounted() {
? ? ? this.initChart()
? ? ? this.resizeHandler = debounce(() => {
? ? ? ? if (this.chart) {
? ? ? ? ? this.chart.resize()
? ? ? ? }
? ? ? }, 100)
? ? ? window.addEventListener('resize', this.resizeHandler)
? ? },
? //銷毀
? ? beforeDestroy() {?
? ? ? if (!this.chart) {
? ? ? ? return
? ? ? }
? ? ? window.removeEventListener('resize', this.resizeHandler)
? ? ? this.chart.dispose()
? ? ? this.chart = null
? ? },
? ? methods: {
? ? ? initChart() {
? ? ? ? this.chart = echarts.init(this.$el, 'macarons')
? ? ? ? this.chart.setOption(this.echartsData, animationDuration)
? ? ? }
? ? }
? }
</script>

3. utlis/index.js

export function debounce(func, wait, immediate) {
  let timeout, args, context, timestamp, result
 
  const later = function() {
    // 據(jù)上一次觸發(fā)時間間隔
    const last = +new Date() - timestamp
    // 上次被包裝函數(shù)被調(diào)用時間間隔last小于設(shè)定時間間隔wait
    if (last < wait && last > 0) {
      timeout = setTimeout(later, wait - last)
    } else {
      timeout = null
      // 如果設(shè)定為immediate===true,因為開始邊界已經(jīng)調(diào)用過了此處無需調(diào)用
      if (!immediate) {
        result = func.apply(context, args)
        if (!timeout) context = args = null
      }
    }
  }
 
  return function(...args) {
    context = this
    timestamp = +new Date()
    const callNow = immediate && !timeout
    // 如果延時不存在,重新設(shè)定延時
    if (!timeout) timeout = setTimeout(later, wait)
    if (callNow) {
      result = func.apply(context, args)
      context = args = null
    }
    return result
  }
}

4. 在.vue 中使用 test/index.vue

<template>
? <div id="test">
? ? <echarts :echartsData="echartsData" />?
? </div>
</template>
<script>
? import echarts from '@/components/echarts/index'
? export default {
? ? components: {
? ? ? echarts
? ? },
? ? data() {
? ? ? return {
? ? ? ? echartsData: {
? ? ? ? ? tooltip: {
? ? ? ? ? ? trigger: 'axis',
? ? ? ? ? ? axisPointer: { // 坐標(biāo)軸指示器,坐標(biāo)軸觸發(fā)有效
? ? ? ? ? ? ? type: 'shadow' // 默認(rèn)為直線,可選為:'line' | 'shadow'
? ? ? ? ? ? }
? ? ? ? ? },
? ? ? ? ? grid: {
? ? ? ? ? ? top: 10,
? ? ? ? ? ? left: '2%',
? ? ? ? ? ? right: '2%',
? ? ? ? ? ? bottom: '3%',
? ? ? ? ? ? containLabel: true
? ? ? ? ? },
? ? ? ? ? xAxis: [{
? ? ? ? ? ? type: 'category',
? ? ? ? ? ? data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
? ? ? ? ? ? axisTick: {
? ? ? ? ? ? ? alignWithLabel: true
? ? ? ? ? ? }
? ? ? ? ? }],
? ? ? ? ? yAxis: [{
? ? ? ? ? ? type: 'value',
? ? ? ? ? ? axisTick: {
? ? ? ? ? ? ? show: false
? ? ? ? ? ? }
? ? ? ? ? }],
? ? ? ? ? series: [{
? ? ? ? ? ? name: 'pageA',
? ? ? ? ? ? type: 'bar',
? ? ? ? ? ? stack: 'vistors',
? ? ? ? ? ? barWidth: '60%',
? ? ? ? ? ? data: [79, 52, 200, 334, 390, 330, 220],
? ? ? ? ? }, {
? ? ? ? ? ? name: 'pageB',
? ? ? ? ? ? type: 'bar',
? ? ? ? ? ? stack: 'vistors',
? ? ? ? ? ? barWidth: '60%',
? ? ? ? ? ? data: [80, 52, 200, 334, 390, 330, 220],
? ? ? ? ? }, {
? ? ? ? ? ? name: 'pageC',
? ? ? ? ? ? type: 'bar',
? ? ? ? ? ? stack: 'vistors',
? ? ? ? ? ? barWidth: '60%',
? ? ? ? ? ? data: [30, 52, 200, 334, 390, 330, 220],
? ? ? ? ? }]
? ? ? ? }
? ? ? }
? ? }
? }
</script>
<style lang="scss" scoped>
? #test {
? ? width: 100%;
? ? height: 100%;
? ? background: antiquewhite;
? ? position: absolute;
? ? top: 0px;
? ? bottom: 0px;
? }
</style>

Vue-cli使用ECharts并封裝ECharts組件

1. 導(dǎo)入echarts

在終端輸入

cnpm install echarts --save

在main.js中引入

import * as eCharts from 'echarts';
Vue.prototype.$eCharts = eCharts;

2. 封裝echarts組件

新建組件echats.vue

首先應(yīng)該明確Echarts圖形必須滿足四項剛性條件才可以繪制:

  • 準(zhǔn)備一個具有寬高的容器(container);
  • 每次繪制之前需要初始化(init);
  • 必須設(shè)置配置,否則無從繪制(option);
  • 改變數(shù)據(jù)時必須傳入改變的數(shù)據(jù),否則監(jiān)聽不到新數(shù)據(jù)(setOption);
  • 1.容器

注意,容器的寬高可以通過v-bind綁定樣式的參數(shù)styleObj來設(shè)置(父組件引用時傳遞過來),使得應(yīng)用echats組件時可以自由地設(shè)置寬高

<template>
? <div id="myChart" :style="styleObj" ref="chart">
? </div>
</template>
  • 2.初始化+配置

由于初始化需要獲取到容器dom,所以需要在mouted生命周期里面初始化 

mounted () {
    //  因為需要拿到容器,所以要掛載之后
     this.init()
 },
 methods: {
     init(){
         let chart = this.$eCharts.init(this.$refs.chart)
         let option = {
          xAxis: {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
          }, //X軸
          yAxis: { type: 'value' }, //Y軸
          series: [
            {
              data: [120, 200, 150, 80, 70, 110, 130],
              type: 'bar',
            }] //配置項
         }
        chart.setOption(option)
 }
}

3. 父組件引用測試

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link

    詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link

    這篇文章主要介紹了詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解el Cascader懶加載數(shù)據(jù)回顯示例

    詳解el Cascader懶加載數(shù)據(jù)回顯示例

    這篇文章主要為大家介紹了詳解el Cascader懶加載數(shù)據(jù)回顯示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Vue的指令中實現(xiàn)傳遞更多參數(shù)

    Vue的指令中實現(xiàn)傳遞更多參數(shù)

    這篇文章主要介紹了Vue的指令中實現(xiàn)傳遞更多參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • VUE項目調(diào)用高德地圖的詳細(xì)步驟

    VUE項目調(diào)用高德地圖的詳細(xì)步驟

    要在Web頁面中加入地圖,我推薦你使用高德地圖JSAPI,下面這篇文章主要給大家介紹了關(guān)于VUE項目調(diào)用高德地圖的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Vue自定義指令實現(xiàn)彈窗拖拽四邊拉伸及對角線拉伸效果

    Vue自定義指令實現(xiàn)彈窗拖拽四邊拉伸及對角線拉伸效果

    小編最近在做一個vue前端項目,需要實現(xiàn)彈窗的拖拽,四邊拉伸及對角線拉伸,以及彈窗邊界處理功能,本文通過實例代碼給大家分享我的實現(xiàn)過程及遇到問題解決方法,感興趣的朋友一起看看吧
    2021-08-08
  • Vue-Element-Admin前端接入SSO的方法步驟

    Vue-Element-Admin前端接入SSO的方法步驟

    本文主要介紹了Vue-Element-Admin前端接入SSO的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 詳解vue-validator(vue驗證器)

    詳解vue-validator(vue驗證器)

    本篇文章主要介紹了vue-validator(vue驗證器),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • vue3.0 CLI - 2.1 -  component 組件入門教程

    vue3.0 CLI - 2.1 - component 組件入門教程

    這篇文章主要介紹了vue3.0 CLI - 2.1 - component 組件入門教程,本文主要的關(guān)注點就是組件,本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • 詳解vue3.x頁面功能拆分方式

    詳解vue3.x頁面功能拆分方式

    本文主要介紹了vue3.x頁面功能拆分方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 解決VUE項目localhost端口服務(wù)器拒絕連接,只能用127.0.0.1的問題

    解決VUE項目localhost端口服務(wù)器拒絕連接,只能用127.0.0.1的問題

    這篇文章主要介紹了解決VUE項目localhost端口服務(wù)器拒絕連接,只能用127.0.0.1的問題
    2020-08-08

最新評論

馆陶县| 长治县| 汾阳市| 上虞市| 湄潭县| 仙游县| 濮阳市| 宁晋县| 刚察县| 揭西县| 茌平县| 陵川县| 班玛县| 独山县| 永靖县| 洪泽县| 开封市| 和林格尔县| 璧山县| 八宿县| 赤城县| 鹤庆县| 偏关县| 军事| 沐川县| 民乐县| 正定县| 德令哈市| 抚州市| 沂源县| 晋宁县| 泸定县| 南溪县| 阿尔山市| 米脂县| 沾益县| 阿巴嘎旗| 扶绥县| 黑龙江省| 龙山县| 吉隆县|