在用 echarts 画旭双饼图( https://www.echartsjs.com/examples/zh/editor.html?c=pie-nest )的时候,经常会伴随着点击事件

如果想要在点击内饼图的时候获取对应的数据动态展示外饼图的变化

像这样:

要如何实现?

因为外饼图的数据是随着点击事件而动态变化的

所以开始的时候,想到用异步请求来点击事件获取,但是辨别传参是个问题

所以,还是由后端把数据都返给前端,然后前端来进行展示和操作

这个情况其实是好做的,但是。如果页面上有两个或两个以上的双饼图呢?这时候就要注意区分点击的是哪一个

可以再组件内传入一个唯一的字段来进行识别比如 id 之类的

监听饼图的点击事件

// el 为传入的dom元素
let myChart = echarts.init(el,'light') myChart.on('click', 'series.pie', function(param) {
if(param.seriesName.indexOf('innnerPie')!==-1){ 点击内饼图的时候
store.commit(Types.M_MOD_SET, { // 触发数据的变化--自定义相应的方法
path: 'doublePieName',
operate: 'set',
value (dd) {
return {seriesName:param.seriesName,pieName:param.name,data:param.data.children}
}
})
}
});

data的数据结构为这样:

let data =    [
{"name": "男","value": 200,"children": [{"name": "正常","value": 10},{"name": "轻度","value": 10},{"name": "中度","value": 20},{"name": "重度","value": 10}]},
{"name": "女","value": 300,"children": [{"name": "正常","value": 90},{"name": "轻度","value": 40},{"name": "中度","value": 20},{"name": "重度","value": 70}]},
{"name": "未知","value": 100,"children": [{"name": "正常","value": 220},{"name": "轻度","value": 10},{"name": "中度","value": 70},{"name": "重度","value": 80}],"selected": true}]

在组件内监听数据的变化并作出反应

  watch: {
doublePieName: { // 监听数据的变化
handler:function(val){
this.data.forEach(item=>{
if(item.name===val.pieName){
item.selected = true
this.ringData = val.data
}else if(val.seriesName.indexOf(this.id)!==-1){
item.selected = false
}
})
},
deep:true
}
},
data() {
return {
ringData:[]
}
},
created() {
this.data.forEach(item=>{
if(item.selected){
this.ringData = item.children
}
})
},
computed: {
...mapState({
doublePieName: state => state.doublePieName
}),
option() {
return {
tooltip: {
trigger: 'item',
formatter: "{c} ({d}%)"
},
series: [
{
name:`innnerPie${this.id}`, // 父组件给传的唯一id
type:'pie',
selectedMode: 'single',
radius: [0,'32%'],
data: this.data,
label: {
normal: {
position: 'inner'
}
},
labelLine: {
normal: {
show: false
}
},
},
{
name:'ringPie',
type:'pie',
radius: ['50%', '65%'],
data: this.ringData
}
]
}
}
}

这样,就可以实现双饼图的点击交互了

vue echarts 给双饼图添加点击事件的更多相关文章

  1. echarts对每个data[i]的图片添加点击事件

    1.综述:以饼图为例,只需要对echarts对象option添加以下几行代码即可 //添加点击事件(单击),还有其他鼠标事件和键盘事件等等 myChart1.on("click", ...

  2. ECharts问题--散点图中对散点添加点击事件

    1. 我们这次就没有先讲解怎么使用散点图了,这个跟之前的一些图还是很类似的,不会的可以去官网上面查看 API 使用.我们这次讲解的是为散点图中的散点添加点击事件,然后在图表之外的一个 div 里面显示 ...

  3. echart字符云之添加点击事件

    // 路径配置 require.config({ paths : { echarts : 'jquery/echarts-2.2.7/build/dist' } }); // 使用EChart.js画 ...

  4. iOS开发小技巧 - label中的文字添加点击事件

    Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...

  5. 【Swift 2.1】为 UIView 添加点击事件和点击效果

    前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 声明 欢迎转载,但请保留文章原始出处:) 博客园: ...

  6. ThinkPHP框架下,给jq动态添加的标签添加点击事件移除标签

    jq移除标签主要就是$("#要移除的id").remove();不再赘述,这里要提醒的是jq中动态添加标签后怎样添加点击事件.一般的jq添加点击事件是用这种方法$("#i ...

  7. 继承UIView的子控件添加点击事件

    UITapGestureRecognizer*tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:selfaction:@select ...

  8. 如何在UILable上添加点击事件?

    最近开始学习iOS开发,今天上来写第一个iOS笔记 昨天碰到一个需求,在UILable上添加点击事件,网上找了写资料,有人建议用透明的UIButton覆盖,有人建议写一个集成自UILable的类,扩展 ...

  9. jquery无法为动态生成的元素添加点击事件的解决方法

    遇到 jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下: (<li>中间的元素是动态生成的), 现在想为<i>添加点击事件, 例子如下: <d ...

随机推荐

  1. 如何大幅提高百度云文件的下载速度?油猴+user-agent-switcher+PanDownload使用教程

    最近尝试了提高百度云下载速度的方法,最后效果还不错,提供给大家参考.效果如图: 第一步:下载油猴插件 (截图来自word文档,所以是反的^_^||) 第二步:在油猴中添加新插件 搜索百度网盘  添加插 ...

  2. Python进阶----GIL锁,验证Cpython效率(单核,多核(计算密集型,IO密集型)),线程池,进程池

    day35 一丶GIL锁 什么是GIL锁:    存在Cpython解释器,全名:全局解释器锁.(解释器级别的锁) ​   GIL是一把互斥锁,将并发运行变成串行. ​   在同一个进程下开启的多个线 ...

  3. Linux:检查当前运行级别的五种方法

    运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别由数字标识. 每个运行级别指定不同的系统配置,并允许访问不同的进程组合.默 ...

  4. Joomla漏洞复现

    漏洞环境及利用 Joomla 3.4.6 : https://downloads.joomla.org/it/cms/joomla3/3-4-6 PHP 版本: 5.5.38 Joomla 3.4 之 ...

  5. 【书评:Oracle查询优化改写】第四章

    [书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的 ...

  6. Jenkins系列之-—DevOps高效插件推荐【转】

    基于Jenkins及其插件生态实现自己的持续交付与DevOps平台. jenkins 插件官网 Blue Ocean Jenkins2.7以后可安装,是Jenkins的一种新视图,能够通过图形化的界面 ...

  7. js计算两个时间差 天 时 分 秒 毫秒

    // 计算两个时间差 dateBegin 开始时间 function timeFn(dateBegin) { //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 var dateEnd = ...

  8. 关于git报 warning: LF will be replaced by CRLF in README.md.的警告的解决办法

    在使用git把代码上传至仓库时,会有下面这种警告: 虽然说是警告,但是看着真的很碍眼啊,特别是有强迫症的人就更难受了. 输入这一行命令就可以完美解决了 git config core.autocrlf ...

  9. Linux 目录和文件的操作

    整理常用的linux命令,关于目录和文件的操作,用于巩固记忆,以备不时之需. [root@localhost ~] root:当前用户 localhost:主机名 ~:当前所在位置 符号#:管理员 符 ...

  10. windows10 进入BIOS

    windows10开机进入不了BIOS 原因 上网查了电脑固件所应该有的进入键,什么F1.F2.F12.Delete以及什么要配置Fn+F1...等等方法就是开机进入不了BIOS. 解决办法 最后发现 ...