本文歸柯三(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生命周期圖:
很顯然在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('組件名', 組件)