惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
G
Google Developers Blog
B
Blog
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
The Cloudflare Blog
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
量子位
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
H
Help Net Security
Help Net Security
Help Net Security
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
N
News | PayPal Newsroom
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
腾讯CDC
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
GbyAI
GbyAI
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker

博客园 - 疯子110

Vue3 + Vite + Ts 报错:Property ‘ ‘ does not exist on type ‘never‘ activiti部署流程后act_re_procdef表中无流程定义信息 【转】openEuler欧拉系统重置密码 【转】nginx开启https导致springboot无法获取正确浏览器请求地址问题 【转】SLF4J(W): No SLF4J providers were found. 解决方法 vue项目放在springboot项目里后,刷新页面会显示whitelabel error page Vue3富文本编辑器wangEditor 5使用总结【转载】 解决 vue3 中 Proxy(Object) 对象无法直接读取或使用 centos7-分区2T以上大硬盘[转】 关于mybatis进行sql查询字段值为null而不显示问题解决办法 Vue3 - 项目中使用 debugger 在 chrome 谷歌浏览器中失效 vue项目error Unexpected ‘debugger‘ statement no-debugger报错 vue项目中 报错 error ‘xxx‘ is assigned a value but never used 在vue中使用leaflet加载地图【转载】 无法加载文件 D:\Program Files\xxxxx\vue.ps1,因为在此系统上禁止运行脚本”的解决方法 - 疯子110 Vue3安装配置+VSCode开发环境搭建,超详细保姆级教程(图文) 【转】将postgresql表名和字段名统一转换为小写 【cesium重新梳理】1.cesium知识整理 【cesium】修改底图颜色为蓝色科技范儿
Vue3 echarts tooltip添加点击事件(最简版)
疯子110 · 2025-06-11 · via 博客园 - 疯子110

需求
需要在echarts tooltip点击跳转对应的页面,效果如下

背景
项目是用vue3和echarts实现的,echarts版本(^5.3.3),并不能把点击事件绑定在window上 且echarts 没有提供点击tooltip的方法(因为当前是基于qiankun的一个微应用)
参考其他解决方法比较繁琐,且没有完善对vue3 版本方法的介绍

解决方法
首先配置echarts 的tooltip,formatter 的模版中定义了 data-param 传递参数

tooltip: {
trigger: 'item',
className: 'tooltip',
enterable: true,
alwaysShowContent: true,
borderWidth: 0,
z: 9999, // 设置较高的 z-index 值
padding: [
0, // 上
0, // 右
0, // 下
0, // 左
],
position(point: any) { // 控制tolltip框的位置
return [point[0], point[1]]// 设置为鼠标的位置
},
//自定义tooltip的显示内容,如下部分为拆出点击内容
formatter: params => {
const { data, percent } = params
const name = data.name.slice(-3)
const str = `
<span style="color:#333;font-weight: 500;"> ${name} </span> <span class="clTic" data-param="${data.tag}"> ${data.tag === 'goodCommentCntRate' ? '去互动' : data.tag === 'negativeCommentRate' ? '去处理' : ''}</span>
return str
},
},

在vue组件onMounted触发实现,重点利用showTip 监听tootip显示,获取元素并监听点击事件,利用target.getAttribute获取传递参数,后续就可以实现逻辑操作了
<template>
<div ref="echartsDom" class="chartdom">图表组件</div>
</template>

<script setup lang="ts">
import { options } from '../const'
const echartsDom = ref<HTMLElement>()
const setOptions = (dom, options) => {
options && dom.setOption(options)
}
onMounted(async () => {
const myChart = echarts.init(echartsDom.value as HTMLElement)
setOptions(myChart, options)
myChart.on('showTip', () => {
const tooltipContent = document.querySelector('.clTic')
if (tooltipContent) {
tooltipContent.addEventListener('click', e => {
const target = e.target as HTMLElement
const res = target.getAttribute('data-param')
emits('chartClick', res)
})
}
})

})
</script>


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/D_S_S_/article/details/137926193