vue中echarts添加点击事件

像这四种情况,我想实现点击事件,点击每一条柱子(折线图,饼图),展示对应的数据,这种点击事件改如何添加呢

img

每一条柱子应该不行吧,单独一个是可以的,下面是参考

var chart = echarts.init(document.getElementById('echarts-dom'));
chart.setOption(对象数组变量);
button.addEventListener('click', function () {  
  chart.showPopup('弹出框内容');  
});  
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/797101
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:vue中使用echarts图表自适应的解决方案
  • 除此之外, 这篇博客: 在vue中给echarts添加点击事件中的 添加左击事件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在setOption echarts后,添加 this.echarts.on(‘click’, function()) 即可添加左击事件,function里面的params是echarts的对象,打印出来查看echarts信息,如关系图的节点信息。根据信息自定义点击部位。
    以下代码是柱状图的点击事件,点击bar打印信息(根据params中的type类型自定义点击部位):

     this.cmpChart.on('click', function (params) {
    	    if (params.componentType === 'series') {
    	       console.log('您点击了我')
    	     }
      })
    

    通过tooltips添加点击事件,首先修改tooltips中的triggerOn,然后可以在tooltips里面添加formatter方法,方法里面返回想要展示的信息:

    tooltip: {
              triggerOn: 'click',
              enterable: true
            },
    
       this.options.tooltip.formatter = function (params) {
          let detail = params.data.detail
          let text1 = JSON.stringify(detail, null, 2)
          let text2 = '<pre>' + text1 + '</pre>'
          let str = ''
          if (params.data.flag === '3') {
            str = '<div style="text-align: left;width:400px;height:300px; ' +
                'white-space:normal; word-break:break-all;overflow:scroll;">'
            return str + text2 + '</div>'
          } else if (params.data.flag === '4') {
            return '<div style="text-align: left;width:150px;height:30px;">右击查看更多功能</div>'
          }
        }
    

    通过dom添加右击事件,以下是给关系图添加右击事件:

      bindEChcartsContextMenu (ec) {
          let currentItem = null
          let _this = this
          ec.on('mouseover', function (pItem) {
            currentItem = pItem
          })
          ec.on('mouseout', function (pItem) {
            currentItem = null
          })
          document.oncontextmenu = function (event) {
            if (currentItem.dataType === 'node') {
              // 操作逻辑
            }
            return false
          }
        },