echarts.js 动态生成多个图表 使用vue封装组件操作
组件只做了简单的传值处理,记录开发思路及echarts简单使用。
这里默认所有图表样式一致,都为柱状图,如需其他类型,可查阅echarts官网文档,再动态传值即可。
vue使用组件------在外层用v-for循环,传不同值进charts即可
vue创建子组件-----初始化空模板
主要部分------初始化echarts.js
Vue.component('charts',{ template:'#charts', //传入对应的数值与动态index props:['options','index'], methods:{ initOption(){ varthat=this vararr1=[]//x轴刻度 vararr2=[]//y轴数据值 //取出需要的数据 this.options.forEach(element=>{ arr1.push(element.selectedTopic) arr2.push(element.peopleNum) }) //基于准备好的dom,初始化echarts实例 varmyChart=echarts.init( document.getElementById('charts'+this.index) ) //指定图表的配置项和数据 varoption={ color:['#3582F8'], tooltip:{ trigger:'axis', axisPointer:{ //坐标轴指示器,坐标轴触发有效 type:'shadow'//默认为直线,可选为:'line'|'shadow' } }, grid:{ left:'3%', right:'4%', bottom:'3%', containLabel:true }, xAxis:[ { type:'category', data:arr1,//X轴的刻度 axisTick:{ alignWithLabel:true } } ], yAxis:[ //y轴的刻度值自动调整 { type:'value' } ], series:{ name:'y轴数值', type:'bar', barWidth:'60%', data:arr2//具体选择数值 } } //使用刚指定的配置项和数据显示图表。 myChart.setOption(option) } }, mounted(){ this.initOption() }, created(){} })
补充知识:vue根据获取的数据动态循环渲染多个echart(多个dom节点,多个ID)
//在dom节点加载之后调用渲染echart仪表盘方法,this.$nextTick(function(){}
methods:{ forId:function(index){ return"geo_"+index }, mapTree(){ this.$nextTick(function(){ for(vari=0;i{c}' }, series:[ { name:'工作电表数', type:'gauge', radius:'80%', min:0, max:Number(this.dataVal[i].sum), splitNumber:10, axisLine:{//坐标轴线 lineStyle:{//属性lineStyle控制线条样式 color:[[0.30,'#ff4500'],[0.80,'#1e90ff'],[1,'lime']], width:1, shadowColor:'#fff',//默认透明 } }, axisLabel:{//坐标轴小标记 color:'#fff', shadowColor:'#fff',//默认透明 shadowBlur:10 }, axisTick:{//坐标轴小标记 length:4,//属性length控制线长 lineStyle:{//属性lineStyle控制线条样式 color:'auto', shadowColor:'#fff',//默认透明 shadowBlur:10 } }, splitLine:{//分隔线 length:7,//属性length控制线长 lineStyle:{//属性lineStyle(详见lineStyle)控制线条样式 width:2, color:'#fff', shadowColor:'#fff',//默认透明 shadowBlur:10 } }, pointer:{//分隔线 width:4,//指针的宽度 length:"70%",//指针长度,按照半圆半径的百分比 shadowColor:'#fff',//默认透明 shadowBlur:5 }, title:{ textStyle:{//其余属性默认使用全局文本样式,详见TEXTSTYLE fontWeight:'bolder', fontSize:10, fontStyle:'italic', color:'#fff', shadowColor:'#fff',//默认透明 shadowBlur:10 } }, detail:{ fontSize:12, }, data:[{value:this.dataVal[i].normalSum,name:''}] }] }); } }) } }
以上这篇echarts.js动态生成多个图表使用vue封装组件操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。