不知道大家有沒有這種感受,當作完一個項目的時候感受有點懵,‘我是誰,我在哪,我在幹什麼’。 哈哈哈,反正我是有。項目作完了,抽出點時間來總結一下,在項目中遇到的一些問題以及解決的方法。ps: 防止下次遇到一樣的問題,不知所措。html
因爲項目的數據比較多,須要引入echarts
來更直觀的展現數據,也能夠在更加方便的完成不少Canvas
功能。vue
1> 安裝 Echarts
npm
npm install echarts --save
複製代碼
2> 在main.js
中引入Echarts
瀏覽器
//引入echart
import echarts from 'echarts'
//將echarts引入到vue的原型中
Vue.prototype.$echarts = echarts
複製代碼
3> 在組件中使用echarts
html 掛載在div標籤上
<div id="myChart" class="echartBox" :style="{width: '100%', height: '400px'}"></div>
js mounted () {
//繪製餅圖
drawPie (item) {
let that = this
let callNameList = []
let callNumList = []
if (!item || item.length == 0){
callNameList = ["空號", "關機", "停機數", "通話中", "接通數"]
callNumList = [
{name: '空號',value: 0},
{name: '關機',value: 0},
{name: '停機數',value: 0},
{name: '通話中',value: 0},
{name: '接通數',value: 0},
]
}else if (item[0]) {
item.forEach((it) => {
callNameList.push(it.callName)
callNumList.push({value: it.num,name: it.callName})
})
}
// 基於準備好的dom,初始化echarts實例
let myChart = this.$echarts.init(document.getElementById('myChart'));
let option = {
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} "
},
legend: {
orient: 'horizontal',
left: 'center',
top: 'bottom',
icon: 'circle',
itemWidth: 6,
itemHeight: 6,
// itemGap: 40, //設置間距
textStyle:{//圖例文字的樣式
color:'#929292',
fontSize:12
},
data: callNameList
},
color:['#5fcdff','#4f5dff','#ffcb17','#0fcb17','#00e1c9','#90e1c9'],
series : [
{
name: '訪問來源',
type: 'pie',
radius : '55%',
center: ['50%', '40%'],
data:callNumList,
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}
myChart.setOption(option,window.onresize = myChart.resize)
},
}
複製代碼
顯示效果:dom
1> 當餅圖渲染的函數,放在vue
的生命鉤子created
中時,運行會報這樣的錯誤,這是由於在created
鉤子中,元素尚未渲染完。將餅圖渲染的函數放在vue
的生命鉤子mounted
中就能夠正常渲染了。 函數
myChart.setOption(option,window.onresize = myChart.resize)
就能夠了。