Echarts柱状图柱子点击事件

效果展示

在这里插入图片描述
在这里插入图片描述

需求

  • 点击柱子显示当天的详细数据

实现

  • 这里只需要拿到被点击柱子对应的X轴时间坐标,可以直接监听click事件

  • 在DOM加载完为chart注册点击事件

  • 拿到被点击的柱子的X轴坐标name

  • 抛回父组件

方法一:直接监听click事件实现这个效果

click

  • 可以拿到柱条 color: “#1DADF1”
  • 第几个 componentIndex: 0
  • 类型 seriesType/componentSubType: “bar”
  • data/value
  • X轴坐标值 name
  • seriesName 类目名
  • 等等
mounted() {
      this.$nextTick(() => {
        this.initChart()
        this.chart = echarts.init(this.$el, 'macarons')
        let self = this
        let chart = this.chart
        this.chart.on('click', params => {
          console.log(params)
          self.$emit('getBar', params.name)
        })
      })
},

方法二:结合getZr和click实现这个效果(比较麻烦,可以用于更复杂效果的实现)

getZr()

  • 结合click事件可以拿到点击位置

  • params.offsetX,params.offsetY 为点击位置的坐标

  • 将画布设置成相对定位,弹框设置成绝对定位

  • 可以实现在点击位置展示弹框的效果

containPixel()

  • 判断给定的点是否在指定的坐标系或者系列上

containPixel()

  • 转换像素坐标值到逻辑坐标系上的点

  • 在DOM加载完为chart注册点击事件

  • 拿到被点击的柱子的index(从0开始,number类型)

  • 抛回父组件,直接用这个index去x轴data里面取当前被点击的柱子的x轴坐标

mounted() {
      this.$nextTick(() => {
        this.initChart()
        this.chart = echarts.init(this.$el, 'macarons')
        let self = this
        let chart = this.chart
        this.chart.getZr().on('click', (params) => {
            const position= [params.offsetX, params.offsetY];
            if (chart.containPixel('grid', position)) {
                let index= chart.convertFromPixel({seriesIndex: 0}, [params.offsetX, params.offsetY])[0];
                self.$emit('getBar', index)
            }
        });
      })
    },
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值