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 相关文章推荐
javascript 对象的定义方法
Jan 10 Javascript
Save a File Using a File Save Dialog Box
Jun 18 Javascript
jquery、js操作checkbox全选反选
Mar 12 Javascript
JavaScript实现简单图片滚动附源码下载
Jun 17 Javascript
JavaScript数值千分位格式化的两种简单实现方法
Aug 01 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
微信小程序 开发MAP(地图)实例详解
Jun 27 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
Oct 31 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python脚本实现查找webshell的方法
2014/07/31 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
全面理解Python中self的用法
2016/06/04 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Python线程threading模块用法详解
2020/02/26 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
试述DBMS的主要功能
2016/11/13 面试题
给校长的一封建议书
2014/03/12 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
商家认证委托书格式
2014/10/16 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书