有同事问我echarts的柱状图监听事件,在多柱状图监听时,没办法区分,直走一个监听,好久没用echarts了,我大概翻了翻API,发现这种场景下,是有完美的解决方案的。
可能是多个指标的展示,也可能是堆叠著状态
echart的官网文档地址👇
Documentation - Apache ECharts
可以看到,echarts的实例绑定的on有两种,三个参数或者四个参数的区别,(如上图小红框,有无query这个参数的区别)
看一下解释,query作为过滤条件,能够只在指定的组件或者元素上进行响应。可为 string
或者 Object
。
这样的话,就可以根据同一个echarts实例中的不同柱状图进行分别的事件监听了。
划重点
其实就是配置下query这么简单,如下图所示,我们直接在绑定点击事件的同时,把区别两个柱状图的seriesName参数传入即可
myChart.on('click', { seriesName: '2011' }, params => { console.log(params) alert('2011') }) myChart.on('click', { seriesName: '2012' }, params => { console.log(params) alert('2012') })
复制
以官网的柱状图示例为基础,贴一下完整的代码吧
const myChart = echarts.init(this.$refs.demo) const option = { title: { text: 'World Population' }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, legend: {}, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: { type: 'value', boundaryGap: [0, 0.01] }, yAxis: { type: 'category', data: ['Brazil', 'Indonesia', 'USA', 'India', 'China', 'World'] }, series: [ { name: '2011', type: 'bar', stack: 'Ad', data: [18203, 23489, 29034, 104970, 131744, 630230] }, { name: '2012', type: 'bar', stack: 'Ad', data: [19325, 23438, 31000, 121594, 134141, 681807] } ] } myChart.setOption(option) myChart.on('click', { seriesName: '2011' }, params => { console.log(params) alert('2011') }) myChart.on('click', { seriesName: '2012' }, params => { console.log(params) alert('2012') })
复制
效果图