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网页关键字高亮代码
Jul 30 Javascript
表单的焦点顺序tabindex和对应enter键提交
Jan 04 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
Apr 07 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
Jun 29 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
浅析vue给不同环境配置不同打包命令
Aug 17 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通用分页类page.php[仿google分页]
2008/08/31 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
HTML DOM的nodeType值介绍
2011/03/31 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
python实现kNN算法
2017/12/20 Python
python表格存取的方法
2018/03/07 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
python遍历路径破解表单的示例
2020/11/21 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
存储过程和函数的区别
2013/05/28 面试题
计算机专业毕业生的自我评价
2013/11/18 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
商务助理求职信范文
2014/04/20 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书