PHP前端开发

vue.js将echarts封装为组件一键使用

百变鹏仔 3周前 (11-27) #echarts
文章标签 一键

做项目的时候为了让数据展示的更加直观,总会用到图表相关的控件,而说到图表控件第一时间当然想到echarts这个开源项目,而它不像iview、element-ui这些组件使用起来那么便捷,需要绕一个小弯,为了图方便于是对echarts进行了一层封装。

Echarts 、 Remodal和Pikaday是我们在开发后台管理类网站时常用的三个第三方组件,本文主要给大家介绍了关于vue.js将echarts封装为组件一键使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

控件演示


控件使用

概要

立即学习“前端免费学习笔记(深入)”;

  • 基于echarts的二次封装

  • 由数据驱动

  • 控件源码见src/components/charts

文档

props

属性说明类型
_id图表唯一标识,当id重复将会报错String
_titleText图表标题String
_xTextx轴描述String
_yTexty轴描述String
_chartData图表数据Array
_type图表类型,提供三种(LineAndBar/LineOrBar/Pie)

调用示例


 <chart></chart> //测试数据样例 [["类别1",10],["类别2",20]]

实现方式

创建一个待渲染的dom


<template> <p></p></template>

绘制函数


function drawPie(chartData,id,titleText,xText,yText) { var chart = echarts.init(document.getElementById(id)) var xAxisData = chartData.map(function (item) {return item[0]}) var pieData = [] chartData.forEach((v,i)=&gt;{  pieData.push({  name:v[0],  value:v[1]  }) }) chart.setOption({  title : {  text: titleText,  subtext: '',  x:'center'  },  tooltip : {  trigger: 'item',  formatter: "{a} <br>{b} : {c} ({d}%)"  },  legend: {  orient: 'vertical',  left: 'left',  data: xAxisData  },  series : [  {   name: xText,   type: 'pie',   radius : '55%',   center: ['50%', '60%'],   data:pieData,   itemStyle: {   emphasis: {    shadowBlur: 10,    shadowOffsetX: 0,    shadowColor: 'rgba(0, 0, 0, 0.5)'   }   }  }  ] }) }

挂载结束、数据源改变时重绘


 watch:{  _chartData(val){  switch (this._type){   case "LineAndBar":   drawLineAndBar(val,this._id,this._titleText,this._xText,this._yText);   break   case "LineOrBar":   drawLineOrBar(val,this._id,this._titleText,this._xText,this._yText);   break   case "Pie":   drawPie(val,this._id,this._titleText,this._xText,this._yText);   break   default:   drawLineAndBar(val,this._id,this._titleText,this._xText,this._yText);   break  }  } }, mounted() {  switch (this._type){  case "LineAndBar":   drawLineAndBar(this._chartData,this._id,this._titleText,this._xText,this._yText);   break  case "LineOrBar":   drawLineOrBar(this._chartData,this._id,this._titleText,this._xText,this._yText);   break  case "Pie":   drawPie(this._chartData,this._id,this._titleText,this._xText,this._yText);   break  default:   drawLineAndBar(this._chartData,this._id,this._titleText,this._xText,this._yText);   break  } }