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)!