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 相关文章推荐
Prototype 学习 Prototype对象
Jul 12 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
JS实现定时自动关闭DIV层提示框的方法
May 11 Javascript
JS中如何实现Laravel的route函数详解
Feb 12 Javascript
Vuex简单入门
Apr 19 Javascript
简单实现js放大镜效果
Jul 24 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
微信小程序radio组件使用详解
Jan 31 Javascript
微信小程序解析富文本过程详解
Jul 13 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
js利用递归与promise 按顺序请求数据的方法
Aug 30 Javascript
如何在vue 中引入使用jquery
Nov 10 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写的资源下载防盗链类分享
2014/05/12 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
学校后勤人员职责
2013/12/27 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
会员活动策划方案
2014/08/19 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android