echarts 多柱状图点击事件分别监听效果实现

有同事问我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')
      })

效果图

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 如果你需要为echarts中的多个柱状图添加点击事件,你可以按照以下步骤进行操作。首先,你需要为每个柱状图实例添加一个点击事件监听器。你可以使用`on`方法来为每个图表实例添加点击事件监听器,如下所示:[1] ```javascript myChart1.on('click', function (params) { console.log(params); }); myChart2.on('click', function (params) { console.log(params); }); // 其他柱状图点击事件监听器... ``` 在每个点击事件的回调函数中,你可以根据需要进行相应的操作。例如,你可以使用`params`参数来获取点击事件的相关信息,如点击的柱条的值、索引等。 另外,如果你想要简洁地写echarts图表的代码,你可以按照以下步骤进行操作。首先,获取echarts的dom节点,并初始化图表实例。然后,根据需要设置图表的配置项和数据,并调用`setOption`方法来更新图表。最后,调用`resize`方法来自适应图表的大小。具体的代码示例如下:[2] ```javascript let charts = echarts.getInstanceByDom(document.getElementById(props.id)); if (charts == null) { charts = echarts.init(document.getElementById(props.id)); } charts.clear(); let option = { // 配置项... }; charts.resize(); charts.setOption(option); ``` 如果柱条没有数据,使用上述方法点击时将不会触发点击事件。如果你希望即使没有数据,点击背景也能触发点击事件,你可以按照以下步骤进行操作。首先,取消点击事件监听器,然后再重新添加点击事件监听器。具体的代码示例如下:[3] ```javascript charts.getZr().off('click'); // 先取消点击事件监听器 charts.getZr().on('click', function (params) { // 点击事件的回调函数 // 在这里可以获取到当前点击的柱条的数据等信息 // 具体的操作可以根据需要进行 }); ``` 通过以上步骤,你可以为echarts中的多个柱状图添加点击事件,并根据需要进行相应的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值