在用 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. golang --Converting and Checking Types

    package main import ( "fmt" "strconv" ) func main() { strVar := "100" ...

  2. Java 随机数生成工具RandomUtils

    RandomUtils /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> ...

  3. 如何在CentOS / RHEL 7上启用IPv6

    默认情况下,在RHEL / CenOS 7系统上启用IPv6.因此,如果故意在系统上禁用IPv6,则可以通过以下任一方法重新启用它. 1.在内核模块中启用IPv6(需要重启)2.使用sysctl设置启 ...

  4. flask与flask-script的使用

    flask与flask-script的使用 一.安装 pip install Flask-Script 二.简单的使用 # manage.py from flask_script import Man ...

  5. 自学Python编程的第八天----------来自苦逼的转行人

    2019-09-18-21:11:24(初学者不会学博客,望大家见谅见谅) 今天学的内容是有关list..dict.set集合的使用方法和注意事项 list和dict在循环中不可删,而且list在迭代 ...

  6. 英语wacche腕表

    手表 (戴在手腕上的计时仪器) 手表,或称为腕表,是指戴在手腕上,用以计时/显示时间的仪器,手表在英语里watch源自中世纪wacche这一词汇. 手表通常是利用皮革.橡胶.尼龙布.不锈钢等材料,制成 ...

  7. 【故障处理】队列等待之TX - allocate ITL entry引起的死锁处理

    [故障处理]队列等待之TX - allocate ITL entry引起的死锁处理 1  BLOG文档结构图       2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌 ...

  8. JavaScript: 详解正则表达式之一

    正则表达式是一个精巧的利器,经常用来在字符串中查找和替换,JavaScript语言参照Perl,也提供了正则表达式相关模块,开发当中非常实用,在一些类库或是框架中,比如jQuery,就存在大量的正则表 ...

  9. NODE简易综合应用服务器搭建

    node搭建简易服务器 querystring和url模板学习地址 querystring&url 1. 目录结构 2. 代码结构 const http = require('http'); ...

  10. list去重,String[]去重,String[]去空,StringBuffer去重,并且以','隔开,list拆分

    1.// 删除ArrayList中重复元素 public static void removeDuplicate(List list) { HashSet h = new HashSet(list); ...