淺談vue單頁面中有多個echarts圖表時的公用代碼寫法
更新時間:2020年07月19日 09:29:13 作者:皮皮蝦-coding
這篇文章主要介紹了淺談vue單頁面中有多個echarts圖表時的公用代碼寫法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
html中:
<div class="charts1"/> <div class="charts2"/> <div class="charts3"/> <div class="charts4"/> <div class="charts5"/> <div class="charts6"/> <div class="charts7"/>
數(shù)據(jù)處理就不用提了。嗯,直接畫圖:
// 畫 折線圖
drawLine() {
// 數(shù)據(jù)處理的方法
this.dealEchartsData()
var myChartsArr = []
for (var i = 1; i <= 7; i++) {
this.myCharts = this.$echarts.init(document.getElementsByClassName('charts' + i)[0])
myChartsArr.push(this.myCharts)
var option = this.commonOption(this.myCharts, this.adnormalTypeSummery[i - 1], this.destArrAll[i - 1])
// 為echarts對象加載數(shù)據(jù) true 防止echarts數(shù)據(jù)疊加!??!
this.myCharts.setOption(option, true)
}
window.onresize = function() { // 自適應
for (var j = 0; j < myChartsArr.length; j++) {
if (myChartsArr[j].resize()) {
myChartsArr[j].resize()
}
}
}
},
公用部分:
// option 主體
commonOption(myCharts, titleText, destData) {
var option = {
title: {
text: titleText
},
tooltip: {
trigger: 'axis',
confine: true
},
legend: {
type: 'scroll',
width: '90%',
top: '13%'
},
grid: {
left: '3%',
right: '4%',
bottom: '2%',
containLabel: true
},
toolbox: {
right: '20',
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.monthName
},
yAxis: {
type: 'value'
},
series: destData
}
return option
}
離開該頁面時候摧毀:
destroyed() {
if (this.myCharts) {
this.myCharts.clear()
this.myCharts.dispose()
window.onresize = null
}
補充知識:Vue + Echarts 圖表展示 及 動態(tài)渲染
準備工作
安裝echarts依賴
npm install echarts --save-dev
引入
(main.js) import echarts from 'echarts' Vue.prototype.$echarts = echarts;
開始擼代碼
<template>
<div class="peopleWrap">
<h3>
<i class="el-icon-position"></i>
出入人員總數(shù){{peopleSumTotal}}
</h3>
<div id="peopleSum" style="width: 180px;height: 270px"></div>
</div>
</template>
<script>
export default {
// 接受父組件傳來的參數(shù)【父傳子props】
props: ["peopleSumTotal"],
data() {
return {
peopleSumTotalArr: []
};
},
watch: {
// 監(jiān)聽參數(shù)變化
peopleSumTotal: {
handler(newVal, oldVal) {
if (newVal != 0) {
console.log(newVal);
this.peopleSum(newVal);
}
}
}
},
methods: {
peopleSum(newVal) {
// 引入 echarts
var echarts = require("echarts");
let peopleSum = echarts.init(document.getElementById("peopleSum"));
//echsrts點擊事件
peopleSum.on("click", function(param) {
console.log(param);
console.log(param.data.name);
console.log(param.data.value);
console.log(param.data.userDefined);
//$emit的第一個為傳的參的名字,第二個為傳的值 【子傳父 this.$emit】
_this.$emit("peopleSumtoparent", param.data);
});
//接受動態(tài)數(shù)據(jù)時需要在 this.$nextTick(()=>{})展示
this.$nextTick(() => {
let obj = {};
obj.value = newVal;
obj.name = newVal;
this.peopleSumTotalArr.push(obj);
let option = {
legend: {
orient: "vertical",
left: 10,
data: [""]
},
series: [
{
type: "pie",
radius: ["50%", "70%"],
avoidLabelOverlap: false,
itemStyle: {
// 普通樣式。
normal: {
// 點的顏色。
color: "#6998f7"
},
// 高亮樣式。
emphasis: {
// 高亮時點的顏色。
color: "#6998f7"
}
},
label: {
normal: {
show: true,
position: "center",
textStyle: {
fontSize: "20"
}
}
},
labelLine: {
normal: {
show: false
}
},
data: this.peopleSumTotalArr //動態(tài)圖表展示
}
]
};
console.log("option", option);
peopleSum.setOption(option);
});
}
},
mounted() {}
};
</script>
<style lang="scss" scoped>
</style>
以上這篇淺談vue單頁面中有多個echarts圖表時的公用代碼寫法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用vue/cli出現(xiàn)defineConfig?is?not?function錯誤解決辦法
這篇文章主要給大家介紹了關于使用vue/cli出現(xiàn)defineConfig?is?not?function錯誤的解決辦法,當我們在做打包配置的時候,出現(xiàn)了這個錯誤,需要的朋友可以參考下2023-11-11
Ant?Design?Vue?Pagination分頁組件的封裝與使用
這篇文章主要介紹了Ant?Design?Vue?Pagination分頁組件的封裝與使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
vue使用vant中的checkbox實現(xiàn)全選功能
這篇文章主要為大家詳細介紹了vue使用vant中的checkbox實現(xiàn)全選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11
基于better-scroll 實現(xiàn)歌詞聯(lián)動功能的代碼
BetterScroll 是一款重點解決移動端(已支持 PC)各種滾動場景需求的插件,BetterScroll 是使用純 JavaScript 實現(xiàn)的,這意味著它是無依賴的。本文基于better-scroll 實現(xiàn)歌詞聯(lián)動功能,感興趣的朋友跟隨小編一起看看吧2020-05-05

