废话:好久没有写博客了,每每看着自己的'战绩'都有点愧疚,但是这段时间确实学习了不少东西,待我慢慢地一 一梳理,将之消化并分享。

---------------------------$O_O$---------------------------

echarts下钻:就是点击echarts图表,让图表展开更详细的下一级数据。比如:点击2018年的数据,展开2018年12个月的数据,再次点击某一个月,展开选中月的整月按天数的数据...

而这最根本的就是——点击事件(呼呼)。

 let myChart = echarts.init(document.getElementById('idName'));
// 基础配置、设置啥的,官网都有,不再赘余
// myChart.showLoading();
// myChart.setOption();
myChart.on('click',(params)=>{
console.log(params);
})

给图表加上点击事件,并点击某个位置,console出来,看看每次点击图表的时候都能返回啥?下图是在echats官网做的一个实验:

下图是返回的参数部分合照:

有木有感觉echats团队掏心掏肺的把能给的都给返回了?!省了不少事。

在这张非全家福中,最有用的莫过于:data、dataIndex、name、seriesIndex、value这几个属性了。

有了他们,你就可以精确的知道用户点击了那个柱图的什么数据,知道用户要什么自然接下来就知道返给他们什么了。然后去后台把数据拿回来,再塞到图表中展示给用户看。。。

具体来说,流程就系下边这样的:

 // 基础配置、设置啥的,官网都有,不再赘余
let myChart = echarts.init(document.getElementById('idName'));
myChart.showLoading();//友好用户体验。。。。。。
  • 画一个空表格 —— 先给客户上点水,别让桌面空着
 let option={//配置自己填,echarts配置项非常详细又强大
xAxis: {
type: 'category',
data: []
},
yAxis: {
type: 'value'
},
series: [{
data: [],
type: 'bar'
}]
};
myChart.setOption(option);

如果觉得就上一杯白开水有点寒酸难看,这一步可以等ajax响应成功后再做
因为数据没回来之前,饼图啥的还好,柱图和线图(有x、y轴的图),就只有两根线比较丑。但也有优点

  • 提前准备好上菜的程序
 function fillNewData(echartsBox,optionData){
echartsBox.setOption({
xAxis: {
data: optionData.xData
},
series : [
{
name: optionData.seriesName,
data: optionData.seriesData
}
]
});
}
  • 初始化填充一组数据,数据可以是ajax返回值来的
 fillNewData(myChart,{
xData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
seriesName: '可有可无看你需要',
seriesData: [120, 200, 150, 80, 70, 110, 130]
})
myChart.hideLoading();//友好用户体验。。。。。。
  • 然后就是正经事了。。。。正经事件
 myChart.on('click',(params)=>{
console.log(params);
// 点击后拿着params里你需要的参数去找后台大佬要新的数据,response再填充进来,如下:
myChart.clear(); //上新菜前擦擦桌子吧。
fillNewData(myChart,{
xData: response.xDataFromDB,
seriesName: response.NameFromDB,
seriesData: response.DataFromDB
});
});

  。至此,一个真正意义上的下钻轮回就成功了,好像也没有特别难,注意点就是重新赛数据时最好只塞几个数据的属性,样式的就不要重复搞了。

总结:利用echarts强大的回调函数面面俱到的params回参,貌似什么事情都能干呢~!不光点击事件,hover事件也不在话下。

每次用echarts的时候,我都要感叹N回,真是良心国产啊!

窃窃私语:这只是很简陋的一个下钻思路,真正做下钻的时候,可能用户点击后你拿到的返回参数需要经过处理再返给后台,而这就需要用户点击的下标,并且把上次返回的数据保存下来用于查找具体值啥的。神烦~

 

2018-12-10  10:13:41  补充:

发现一个问题,点击柱子的空白区域没有反应。比如下图中画圆圈的位置,红色箭头是截图时鼠标的位置::

这个解决方法,见另一篇博文最底部:

监听click事件必须点到柱上,点击柱子之间的空白区域没有作用

声明:

  请尊重博客园原创精神,转载或使用图片请注明:

  博主:xing.org1^

  出处:http://www.cnblogs.com/padding1015/

第三方工具 - 关于echarts下钻功能的一些总结.js的更多相关文章

  1. H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图

    今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...

  2. 转:与Microsoft Visual Studio集成良好的第三方工具

    我们都知道,Microsoft Visual Studio(简称VS)是微软开发的一个非常高效的集成开发环境,但即使已经发展到VS2012,仍然有许多不尽人意的地方.一般来讲,一个项目中需要有控件.代 ...

  3. Unity3D所使用的第三方工具

    前言 最近在研究Unity3D的结构和原理.关于Unity3D怎么用之类的教程在网上一找一大堆,想看教程之类的就不用看这篇文章了.我想做的是从使用Unity3D所看到的表象(表),摸透其设计原则和组织 ...

  4. 【转】iOS开发工具系列(按功能分)

    http://www.cocoachina.com/newbie/basic/2014/0417/8187.html 这是我们多篇iOS开发工具系列篇中的一篇,此前的文章比如:那些不能错过的Xcode ...

  5. Mac下如何不借助第三方工具实现NTFS分区的可写挂载

    问题背景 我想很多使用Mac的同学都会遇到读写NTFS磁盘的问题,因为默认情况下Mac OSX对NTFS磁盘的挂载方式是只读(read-only)的,因此把一个NTFS格式的磁盘插入到Mac上,是只能 ...

  6. 通过第三方工具体验Microsoft Graph

    作者:陈希章 发表于 2017年3月22日 上一篇文章我介绍了如何利用官方提供的Graph 浏览器快速体验Microsoft Graph强大功能,这是极好的起点.官方的Graph浏览器力图用最简单的方 ...

  7. 第三方工具系列--Lombok常用注解

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...

  8. 图表制作工具之ECharts

    简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10 ...

  9. Java第三方工具库/包汇总

    一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...

随机推荐

  1. mysql5.7中解决中文乱码的问题

    在使用mysql5.7时,会发现通过web端向数据库中写入中文后会出现乱码,但是在数据库中直接操作SQL语句插入数据后中文就显示正常,这个问题怎么解决呢?此处不对mysql的数据编码过程和原理进行讲解 ...

  2. 《Java编程思想》读书笔记

    前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边 ...

  3. webTest-----webUI自动化框架

    webTest框架介绍 地址 https://github.com/wuranxu/webTest 希望大家能够喜欢!!! 简介 本框架基于Python3+selenium3+unittest组成,用 ...

  4. 模板语言变量,js变量,js自执行函数之前嵌套调用

    1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = &quo ...

  5. Oracle 11g数据库安装和卸载教程

    Oracle11g的安装教程 同时解压缩两个zip文件,生成一个database文件夹,进入到database文件夹,点击setup 去掉安全更新的选项,直接下一步 选择创建和配置数据库,点击下一步 ...

  6. Python开发入门14天集训营-第一章

    python第一章 python变量 变量的作用 存数据 被程序调用和操作 标记数据 声明变量 name = "Ydh" 变量名 = 变量值 变量定义规范: 变量名只能是 字母.数 ...

  7. 【java学习笔记】文件操作

    文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...

  8. java 集合框架(十六)Map

    一.概述 Map是一个包含键值对的集合,一个map不能有重复的键(key),而且每个键至多只能对应一个值.Map同Collection一样,它的所有通用实现都会提供一个转换器构造函数,接收一个Map类 ...

  9. 航空客户价值分析特色LRFMC模型——RFM升级

    本文转载自微信公众号TIpDM. 每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 我们说RFM ...

  10. dojo省份地市级联之省份Dao接口类(三)

    dojo省份地市级联之省份Dao接口类 ProvinceDao.java: /** * 省份-Dao */ package com.you.dao; import java.util.List; im ...