自学内容网 自学内容网

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)
            }
        });
      })
    },


原文地址:https://blog.csdn.net/caseywei/article/details/137903283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!