基于vue2定义自己的图表echart组件
先安装echarts
cnpm i echarts -S
,然后定义父组件
<template> <div> <echarts :option="echartOpion"></echarts> </div> </template> <script> import echarts from './echarts.vue' // 引入子组件 export default { data() { return { // 传给子组件的值,这里以柱状图的参数为例,可以参考官网 http://www.echartsjs.com/examples/ echartOpion: { color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [{ type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } }], yAxis: [{ type: 'value' }], series: [{ name: '直接访问', type: 'bar', barWidth: '60%', data: [10, 52, 200, 334, 390, 330, 220] }] }, cloneOption: null } }, components: { echarts //导入组件 }, mounted() { } } </script>
然后是子组件
<template> <div> <div style="height:500px;width:500px" ref="myEchart"> </div> </div> </template> <script> import echarts from 'echarts' export default { data() { return { chart: null } }, props: { // 图表的数据是否远程请求 mapdata: { type: String, default: '' }, // 直接从父组件获取 option: Object }, watch: { // 监听父组件传过来的option值 option(val) { if(this.chart) { // 是否存在数据,存在则设置值否则清空 // 这里的setOption()和clear()方法为echart提供的方法,可参照http://www.echartsjs.com/api.html#echarts this.option ? this.chart.setOption(val) : this.chart.clear(); } } }, methods: { initChart() { // 初始化 this.chart = echarts.init(this.$refs.myEchart); // 把配置和数据放这里 this.chart.setOption(this.option); } }, mounted() { // 在这里上面定义了一个mapdata,如果存在则发送请求后设置值,方法一样 this.initChart(); }, beforeDestroy() { if (!this.chart) { return } this.chart.dispose();// 销毁 this.chart = null; } } </script>
这样就可以引入echart了,不过这里有一个问题就是不同的图配置不一样,而且我们肯很多地方都用到,所以我们要把配置也就是option里面的东西提出来作为公共的部分,这里以柱状图的配置为例:先新建一个options.js文件,文件代码如下:
export default { data() { return { // 暴露出公共配置 barOption: { color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [{ type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } }], yAxis: [{ type: 'value' }], series: [{ name: '直接访问', type: 'bar', barWidth: '60%', data: [10, 52, 200, 334, 390, 330, 220] }] } } }, methods: { // 深度拷贝对象或者数组 clone(obj) { return JSON.parse(JSON.stringify(obj)); } } }
这时候只需要在需要的地方引入这个配置就可以,父文件修改如下
<template> <div> <echarts :option="echartOpion"></echarts> </div> </template> <script> import echarts from './echarts.vue' // 引入子组件 import chartsOps from './options.js' // 公共配置文件 export default { mixins: [chartsOps], // 这里mixins的作用比直接引入组件的好处是可以直接调用组件里面的方法和属性 data() { return { // 传给子组件的值,这里以柱状图的参数为例,可以参考官网 http://www.echartsjs.com/examples/ echartOpion: {} } }, components: { echarts }, mounted() { // 将配置拷贝一份出来赋值给echartOpion,这时候可以随意修改echartOpion里面的属性,赋值为自己的数据: // 如this.echartOpion.xAxis = xxx this.echartOpion = this.clone(this.barOption); } } </script>
这里只是介绍了柱状图的配置,其他的如热力图,饼图等配置一样方法,可以将所有配置写在一个文件也可以每种图写一个文件好区分,个人爱好,以上
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux上的文件类型与默认图标
引言 也许小伙伴们对 Linux 已经有一定程度的了解,或者已经是一名能够在工作和生活中活用它的 Linux 用户了。随着桌面环境的不断发展,Linux 系统已经不再仅仅是一个面向极客和开发者的操作系统了,在 PC 上,上手 Linux 桌面已经可以变得像上手Windows 桌面一样简单。 本篇文章是一篇纯黑的技术软文,讲的是我们平时一般不会在意的东西,而且不会涉及具体编程方面的知识,所以小伙伴们不用担心文章过于晦涩难懂,尽情的一边喝茶一边涨知识吧! Windows上的文件类型与默认图标 在Windows上,文件类型基于唯一后缀名进行区分,比如——文本类型的后缀名是”.txt”,而Win32应用程序的后缀名是“.exe”。在win10系统中,这些后缀名默认被隐藏,在文件管理器的选项中更改设置为显示,就能够看到每个文件的后缀名了。 对于每一种文件类型,Windows上都有一个默认图标(一般exe的图标不是默认的,而是应用自己定制的),它的默认图标可以由默认打开它的应用决定,比如——使用winrar作为默认应用打开”.zip”压缩文件,那么所有的”.zip”类型文件默认图标都会变成winr...
- 下一篇
Springboot 2.0 - 集成redis
最近在入门SpringBoot,然后在感慨 SpringBoot较于Spring真的方便多时,顺便记录下自己在集成redis时的一些想法。 从springboot官网查看redis的依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 操作redis /* 操作k-v都是字符串的 */ @Autowired StringRedisTemplatestringRedisTemplet; /* 操作k-v都是对象的 */ @Autowired RedisTemplateredisTemplate; redis的包中提供了两个可以操作方法,根据不同类型的值相对应选择。 两个操作方法对应的redis操作都是相同的 stringRedisTemplet.opsForValue()//...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 2048小游戏-低调大师作品