在用 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. HDU校赛 | 2019 Multi-University Training Contest 1

    2019 Multi-University Training Contest 1 http://acm.hdu.edu.cn/contests/contest_show.php?cid=848 100 ...

  2. 依赖注入 DI 控制反转 IOC 概念 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. JUC-FutureTask

    得到别的线程任务的返回值 import lombok.extern.slf4j.Slf4j; import java.util.concurrent.Callable; import java.uti ...

  4. C# 利用MS的 EntLib的Database类编写的DbHelper

    C# 利用MS的 EntLib的Database类编写的DbHelper,由于MS的EntLib对Oracle.SQL Server和MySql已经封装,所以可以该DbHelper可以适用这三种数据库 ...

  5. Java GC的工作原理详解

    JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代下载地址  和旧生代采用不同的垃圾回收机制. 首先来看一下JVM内存结 ...

  6. JAVA项目之增删改查

    public class ProductDao { // 查询所有商品 // BeanListHandler查询所有商品 public List<Product> getAll() thr ...

  7. react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process

    背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的buil ...

  8. 二维码扫码登录原理及简单demo

    扫码登录原理转载自: https://www.cnblogs.com/liyasong/p/saoma.html 需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这 ...

  9. scrapy 下载器中间件 随机切换user-agent

    下载器中间件如下列表 ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewa ...

  10. Java使用JsonPatch

    老规矩,概念的东西不再此处体现,baidu即可自行解决,直入主题,动手第一. 导入所需的jar文件 pom.xml     <dependencies>        <depend ...