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 相关文章推荐
jquery lazyload延迟加载技术的实现原理分析
Jan 24 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
Aug 10 Javascript
jQuery+Pdo编写login登陆界面
Aug 01 Javascript
vue中axios解决跨域问题和拦截器的使用方法
Mar 07 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
Vue触发式全局组件构建的方法
Nov 28 Javascript
可能被忽略的一些JavaScript数组方法细节
Feb 28 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
Vue3.x源码调试的实现方法
Oct 13 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
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自动反斜杠的函数代码
2010/01/05 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Django实现表单验证
2018/09/08 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
记帐员岗位责任制
2014/02/08 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
中职生求职信
2014/07/01 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
实习介绍信范文
2015/05/05 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python