ECharts事件处理并和对返回params对象的内部参数分析

ECharts 通过 on 方法来监听用户的行为,例如监控用户的点击行为。

ECharts 中的事件分类


ECharts 中事件分为两种类型:

一、用户鼠标点击如’click’、‘dblclick’、‘mousedown’、‘mousemove’、‘mouseup’、‘mouseover’、‘mouseout’、‘globalout’、‘contextmenu’ 事件。

二、用户在使用可以交互的组件后触发的行为事件,例如在切换图例开关时触发的 ‘legendselectchanged’ 事件),数据区域缩放时触发的 ‘datazoom’ 事件等等。

点击事件的params参数

所有的鼠标事件包含参数 params,这是一个包含点击图形的数据信息的对象,我们用一张简单的折线图,给它添加点击事件,通过控制台输出看看params参数的内部到底是什么样。

myChart.on('click', function (params) {
    alert(params.name);
});

在这里插入图片描述
这是一个官方的折线图实例(代码在ECharts就能找到),我们给它添加了点击事件,现在点击最上面曲线的第三个点,我们看看到输出的 params的内部包含了很多参数,我们一个一个往下看。
在这里插入图片描述

  1. $ v a r s 对 象 数 组 : vars对象数组: vars标识这个是jQuery对象,为方便后续直接用jQuery方法(不确定)
  2. borderColor:组件的边框颜色
  3. componentIndex:曲线数据传入series中的index(下标从0开始)
  4. componentSubType:曲线的类型
  5. componentType:当前点击的图形元素所属的组件名称,其值如 ‘series’、‘markLine’、‘markPoint’、‘timeLine’ 等。
  6. data:曲线点击该点对应Y轴的值(传入的原始数据项)
  7. dataIndex:点击曲线上的点对应X轴的序号,数据在传入的 data 数组中的 index(下标从0开始)
  8. dataType:(不确定)
  9. dimensionNames:(不确定)
  10. encode:(不确定)
  11. event.type:触发事件的类型;(其余参数不确定)
  12. marker:点击曲线对应的CSS属性
  13. name:曲线点击该点对应X轴的值
  14. seriesId:点击曲线对应的曲线名称
  15. seriesIndex:曲线数据在series中的顺序/编号(下标从0开始)
  16. seriesName:点击曲线对应的系列名称。当 componentType 为 ‘series’ 时有意义。
  17. seriesType:点击曲线对应的系列类型。值可能为:‘line’、‘bar’、‘pie’ 等。当 componentType 为 ‘series’ 时有意义。
  18. type:触发事件的类型
  19. value:曲线点击该点对应Y轴的值

柱状图、折线图、饼状图中params对应的参数应该大同小异,就先分析这一个,日后遇到问题在继续更新上述数据。

点击事件的应用

如何区分鼠标点击到了哪里:(结合上述讲解,你一定看得懂以下代码)

myChart.on('click', function (params) {
    if (params.componentType === 'markPoint') {
        // 点击到了 markPoint 上
        if (params.seriesIndex === 5) {
            // 点击到了 index 为 5 的 series 的 markPoint 上。
        }
    }
    else if (params.componentType === 'series') {
        if (params.seriesType === 'graph') {
            if (params.dataType === 'edge') {
                // 点击到了 graph 的 edge(边)上。
            }
            else {
                // 点击到了 graph 的 node(节点)上。
            }
        }
    }
});

使用 query 只对指定的组件的图形元素的触发回调:

chart.on(eventName, query, handler);

在 ECharts 中基本上所有的组件交互行为都会触发相应的事件,常用的事件和事件对应参数在 events 文档中有列出。
在这里插入图片描述

今天就到这里,有很多地方还没有去升入研究,接触echarts没多久,希望能一起进步。也有很多地方还不确定,如果有大佬们知道答案的,或者发现文章有错误之处的,欢迎评论批评指正~

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Vue 中使用 Echarts 时,如果遇到tooltip不更新的问题,可以检查以下几个方面: 1. 确认数据已经更新 首先要确定数据已经更新,这可以通过打印或者在页面上显示数据进行确认。 2. 确认tooltip.formatter中的params参数 在tooltip.formatter中,params参数是一个数组,它包含了当前图表的数据。如果params没有更新,则可能是因为params没有正确的绑定到Vue的数据上。可以使用Vue的watch属性来监听数据的变化,然后手动更新params参数。 3. 使用Vue的ref属性 使用Vue的ref属性来获取图表实例,然后通过实例来更新tooltip.formatter的params参数。在mounted生命周期钩子函数中,可以获取到实例,然后在数据更新之后,手动调用实例的setOption方法来更新图表。 ``` <template> <div ref="chart" style="width: 100%; height: 100%;"></div> </template> <script> import echarts from 'echarts'; export default { name: 'EchartsDemo', data() { return { chartData: [], }; }, mounted() { this.chart = echarts.init(this.$refs.chart); this.chart.setOption(this.getOption()); }, methods: { getOption() { return { tooltip: { trigger: 'axis', formatter: (params) => { return `x:${params[0].value[0]} y:${params[0].value[1]}`; }, }, series: [ { type: 'scatter', data: this.chartData, }, ], }; }, updateChartData() { // 更新数据 this.chartData = [ [1,2], [2,3], [3,4] ]; // 手动更新tooltip.formatter中的params参数 this.chart.setOption({ tooltip: { formatter: (params) => { return `x:${params[0].value[0]} y:${params[0].value[1]}`; }, }, series: [ { type: 'scatter', data: this.chartData, }, ], }); }, }, }; </script> ``` 以上是一些可能的解决方案,如果还不能解决问题,可以提供更多的信息以便进一步排查。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值