首页 > 其他分享 >echarts tooltip 中添加点击事件(vue项目)

echarts tooltip 中添加点击事件(vue项目)

时间:2022-11-18 16:55:06浏览次数:56  
标签:触发 vue value click 点击 params tooltip 提示框 echarts

最近碰见一个需求,就是Echarts地图 提示框中有网址,点击网址的时候跳转到指定的网页,

 

 

这个需求挺有意思,刚开始写的时候感觉应该就是普通的逻辑,没啥特别注意的,后来在写的过程中发现有一个坑需要特别注意,好了开始上代码
最开始的时候tooltip 是这样写的

tooltip: {
            appendToBody: true,
            className: "mapCharts",
            // 鼠标是否可以进入悬浮框
            enterable: true,
            // 触发方式 mousemove, click, none, mousemove|click
            triggerOn: `click`,   // 鼠标点击的时候触发 如果是mousemove 提示框移动就会变或者消失,不能点击提示框中的网址了
            // item 图形触发, axis 坐标轴触发, none 不触发
            trigger: `item`,
            // 浮层隐藏的延迟
            hideDelay: 1000 * 3,
            // 背景色
            backgroundColor: `#fff`,
            formatter: function (params) {
              if (typeof params.value != "number") {
               // 第一次写的时候直接在里面的加的点击事件,不过出现了一个问题,就是当你在点击这个提示框的时候会直接触发这个事件跳走到其他的网址了,这个就像事件向内层传递似的,为此苦恼了好长时间

         return `<div class="chartLabel" style="padding:0;margin:0"> <p style="margin:0;padding:0;line-height:40px;border-bottom:1px dashed #4d4d4d;padding-left:5px;padding-right:5px;font-size:14px;font-weight:600" ><span>${params.name}</span></p> <p @click=${that.openLink(params.value[2])} style="cursor: pointer;font-size:14px;line-height:24px;margin:0;padding:0;padding-left:5px;padding-right:5px;margin-bottom:5px;">市场网址:${params.value[2]}</p> <p style="font-size:14px;line-height:24px;margin:0;padding:0;padding-left:5px;padding-right:5px;margin-bottom:5px;">今日报价:<span style="color:#56D189;margin-right:5px;margin-left:5px;font-size:bold">${params.value[3]}</span>条</p> </div>`; } }, extraCssText: "padding-left:5px;padding-right:5px;border-radius:10px;color:#4d4d4d;", //提示框最外层div设置 },

 这个效果和需求相差甚远,只能换一种方案实现了(上正确的代码)

tooltip: {

            appendToBody: true,
            className: "mapCharts",
            // 鼠标是否可以进入悬浮框
            enterable: true,
            // 触发方式 mousemove, click, none, mousemove|click
            triggerOn: `click`,
            // item 图形触发, axis 坐标轴触发, none 不触发
            trigger: `item`,
            // 浮层隐藏的延迟
            hideDelay: 1000 * 3,
            // 背景色
            backgroundColor: `#fff`,
            formatter: function (params) {
              if (typeof params.value != "number") {
                that.hookToolTip = params;
                that.linkUrl = params.value[2];
          return `<div class="chartLabel" style="padding:0;margin:0"> <p style="margin:0;padding:0;line-height:40px;border-bottom:1px dashed #4d4d4d;padding-left:5px;padding-right:5px;font-size:14px;font-weight:600" ><span>${params.name}</span></p> <p class='linkweb' style="cursor: pointer;font-size:14px;line-height:24px;margin:0;padding:0;padding-left:5px;padding-right:5px;margin-bottom:5px;">市场网址:${params.value[2]}</p> <p style="font-size:14px;line-height:24px;margin:0;padding:0;padding-left:5px;padding-right:5px;margin-bottom:5px;">今日报价:<span style="color:#56D189;margin-right:5px;margin-left:5px;font-size:bold">${params.value[3]}</span>条</p> </div>`; } }, extraCssText: "padding-left:5px;padding-right:5px;border-radius:10px;color:#4d4d4d;", //提示框最外层div设置 },

   

 

data 中定义的变量:

 

 利用监听器来实现单机跳转的功能:

 

标签:触发,vue,value,click,点击,params,tooltip,提示框,echarts
From: https://www.cnblogs.com/lxsunny/p/16903721.html

相关文章

  • vue 3 打印 print-js
     1、安装npminstallprint-js--save2、引用importprintfrom'print-js'3、编写打印函数constenterDialog=async()=>{conststyle='@......
  • vue3 生成二维码 qrcodejs2-fix
    1、安装qrcodejs2-fixnpminstallqrcodejs2-fix2、引入qrcodejs2-fiximportQRCodefrom'qrcodejs2-fix';3、在页面中定义容器<divid="code"></div>4、定义......
  • vue dialog弹窗
     <el-dialogv-model="dialogFormVisible":before-close="closeDialog"title="打印"></el-dialog> //弹窗控制标记constdialogFormVisible=ref(false)/......
  • 【vue】 Failed to load resource: the server responded with a status of 404 (Not
    前端在向服务器请求资源的时候,服务器的响应状态为404,导致页面打不开,再次刷新时页面能打开,不知为何原因注意:并没有实践相关资料:方案一方案二     搜索复......
  • Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建
    该系列已更新文章:分享一个实用的vite+vue3组件库脚手架工具,提升开发效率开箱即用yyg-cli脚手架:快速创建vue3组件库和vue3全家桶项目Vue3企业级优雅实战-组......
  • vue后台管理系统"多条件查询"书写逻辑
      首先要创建el-from表单,在表单中创建两个输入框并双向绑定 首选行内表单:  代码如下: <el-form:inline="true":model="formInline"class="demo-form-in......
  • echarts 图表设置默认选中
    一、数据图形import*asechartsfrom'echarts'constmyChart=echarts.init(document.querySelector('pie'))官方文档events官方文档action设置高亮myChart.d......
  • Vue中的`:src`发生了什么?
    Vue中的:src发生了什么?案例一<template><img:src="'../assets/logo.png'"alt="four"></template>//最终在浏览器DOM树中,img标签会被编译成这样<imgsrc="......
  • vue + electron 实现pc端应用
    首先需要创建一个vue2.0的项目然后通过vueaddelectron-builder上面的命令,将vue和electron结合然后项目的文件夹会发生一些改动,如下:package.json......
  • vue-meta实现router动态设置meta标签
    一.meta标签提供关于HTML文档的元数据 (元数据指用来描述数据的数据)。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或从新加载页面)、搜......