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 相关文章推荐
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
jQuery带控制按钮轮播图插件
Jul 31 jQuery
jQuery实现简单全选框
Sep 13 jQuery
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/03/05 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
原生JS实现垂直手风琴效果
2017/02/19 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python字符编码判断方法分析
2016/07/01 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
浅析Python 责任链设计模式
2020/09/11 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
AT&T Wireless:手机、无限数据计划和配件
2018/06/03 全球购物
Ref与out有什么不同
2012/11/24 面试题
总经理文秘岗位职责
2014/02/03 职场文书
党员公开承诺事项
2014/03/25 职场文书
市政管理求职信范文
2014/05/07 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
2014年国庆节寄语
2014/09/19 职场文书
导游词欢迎词
2015/02/02 职场文书
基层党支部承诺书
2015/04/30 职场文书
寒假致家长的一封信
2015/10/10 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang