Vue 系列(一): Vue + Echarts 開發可復用的柱形圖組件


本文歸柯三(kesan)所有,轉載請注明出處 https://www.cnblogs.com/kesan/p/11255859.html

前置條件

系統中已經安裝如下組件

  • node.js
  • npm
  • vue
  • vue-cli

安裝echarts

npm install echarts

引入echarts

在組件源碼處引入echarts組件

import echarts from 'echarts'

如果需要按需引入,請參考官方文檔
點此查看官方文檔

柱形圖組件開發

先定義一個寬高均為500px的div以供echarts繪出組件

<template>
    <div>
        <div id="test" style="width:500px;height:500px">
        </div>
    </div>
</template>

定義組件需要的屬性
在本例中,我們定義了兩個需要由用戶來提供數據的屬性

  • xData 即x軸的數據
  • yData 即y軸的數據
  props: {
    'xData': Array,
    'yData': Array
  }

初始化柱形圖組件

首先我們需要定義柱形圖的option (title也可以抽出來設置為屬性)

option: {
        title: {
            text: 'Vue柱形圖組件'
        },
          xAxis: {
            type: 'category',  
            data: []
          },
          yAxis: {
              type: 'value'
          },
          series: [
            {
              name: '銷量',
              type: 'bar',
              data: []
            }
          ]
      }

** 初始化組件 **

    this.chart = echarts.init(document.getElementById("test"))
    this.option.xAxis.data = this.xData
    this.option.series[0].data = this.yData
    this.chart.setOption(this.option)

在何時初始化組件?

首先來看一看著名的Vue生命周期圖:
Vue生命周期

很顯然在Created時組件都還沒渲染,因此比較合適的時機是在mounted完成之后執行ECharts組件初始化的操作。

也就是說我們要將ECharts初始化工作放到mounted函數中執行,如果放入到Created中就會出錯,因為Created時組件還未進行渲染工作。

完整的代碼

<template>
    <div>
        <div id="test" style="width:500px;height:500px">
        </div>
    </div>
</template>

<script>
/* eslint-disable */
import echarts from 'echarts'
export default {
  name: 'Histogram',
  data: function () {
    return {
      option: {
        title: {
            text: 'Vue柱形圖組件'
        },
          xAxis: {
            type: 'category',  
            data: []
          },
          yAxis: {
              type: 'value'
          },
          series: [
            {
              name: '銷量',
              type: 'bar',
              data: []
            }
          ]
      },
      chart: {} 
    }
  },
  props: {
    'xData': Array,
    'yData': Array
  },
  methods: {
    updateData: function () {
      console.log("update data")
    }
  },
  created: function (){
      console.log(this.xData)
      console.log('created')
  },
  mounted: function(){
    this.chart = echarts.init(document.getElementById("test"))
    this.option.xAxis.data = this.xData
    this.option.series[0].data = this.yData
    this.chart.setOption(this.option)
  }
}
</script>

記得注冊組件!!!

Vue.component('組件名', 組件)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM