echart vue 嵌套饼图_vue echarts 给双饼图添加点击事件

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

像这样:

要如何实现?

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

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

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

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

可以再组件内传入一个唯一的字段来进行识别比如 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}

}

})

}

});

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

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

}

]

}

}

}

done

原文:https://www.cnblogs.com/leiting/p/11655486.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值