vue.js如何将echarts封装为组件一键使用详解


Posted in Javascript onOctober 10, 2017

前言

本文主要给大家介绍了关于vue.js将echarts封装为组件一键使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

说明

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

控件演示

vue.js如何将echarts封装为组件一键使用详解

控件使用

概要

  • 基于echarts的二次封装
  • 由数据驱动
  • 控件源码见src/components/charts

文档

props

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

调用示例

<chart
 :_id="'testCharts'"
 :_titleText="'访问量统计'"
 :_xText="'类别'"
 :_yText="'总访问量'"
 :_chartData="chartData"
 :_type="'Pie'"></chart>
 //测试数据样例 [["类别1",10],["类别2",20]]

实现方式

创建一个待渲染的dom

<template>
 <div :id="_id" class="chart"></div>
</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)=>{
  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
  }
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 Javascript
myFocus slide3D v1.1.0 使用方法与下载
Jan 12 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
简单实现Bootstrap标签页
Aug 09 Javascript
ztree实现权限横向显示功能
May 20 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
Jun 17 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
vue项目或网页上实现文字转换成语音播放功能
Jun 09 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 #Javascript
基于vue的换肤功能的示例代码
Oct 10 #Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 #Javascript
利用JS hash制作单页Web应用的方法详解
Oct 10 #Javascript
认识jQuery的Promise的具体使用方法
Oct 10 #jQuery
JavaScript如何获取到导航条中HTTP信息
Oct 10 #Javascript
使用Dropzone.js上传的示例代码
Oct 10 #Javascript
You might like
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
php探针不显示内存解决方法
2019/09/17 PHP
PHP 实现链式操作
2021/03/09 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
javascript编程起步(第六课)
2007/01/10 Javascript
function, new function, new Function之间的区别
2007/03/08 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python实现简单的四则运算计算器
2016/11/02 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Windows下安装Scrapy
2018/10/17 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python自动下载图片的方法示例
2020/03/25 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
在线服装零售商:SheIn
2016/07/22 全球购物
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
学生打架检讨书1000字
2014/01/16 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
进口业务员岗位职责
2014/04/06 职场文书