ts 下使用 interactjs 的时候,事件类型该如何定义 InteractEvent

news2024/9/20 16:23:05

ts 下使用 interactjs 的时候,事件类型该如何定义 InteractEvent

一、问题

interactjs 是一个很好用的给元素添加拖动事件的插件,它可以实现如下的效果。
其官网是 https://interactjs.io/

在这里插入图片描述

vite+ts+vue3 项目中用到了 interactjs 这个库,但在定义方法参数的时候,不知道该如何定义它的 event 类型了,像这样:这个方法中的 event 到底是什么类型

在这里插入图片描述

二、寻找解决办法

查询了官方的文档,加上查看它的源码,终于找到了这个 event 正确的定义。

官方文档: https://interactjs.io/docs/events/

正确的定义应该是 InteractEvent 这个 event 名。

知道了这个名,又去源码中搜索它,找到了它的定义位置:

在这里插入图片描述

三、解决

将这个 InteractEvent 引入之后直接定义方法中的 event 类型,发现不可以,提示如下:
意思是 这个引入的 InteractEvent 并不是一种类型,而是一个 namespace
在这里插入图片描述
当再回去查看关于 InteractEvent 的定义的时候能看到,我们应该使用它内部的 InteractEvent class, 也就是 InteractEvent.InteractEvent

在这里插入图片描述
在这里插入图片描述
像上面这样才算正常,当使用 event. 的时候也能正常的提示它内部的属性值了

四、部分代码

<script lang="ts" setup>
import interact from 'interactjs'
import InteractEvent from '@interactjs/core/InteractEvent'

onMounted(() => {
   interact(refDeviceTag.value)
       .draggable({
           // enable inertial throwing
           inertia: true,
           // 是否保持 dom 元素在其父 dom 中
           modifiers: [
               interact.modifiers.restrictRect({
                   restriction: 'parent',
                   endOnly: true
               })
           ],
           // enable autoScroll
           autoScroll: true,
           listeners: {
                start: ()=>{},          // 拖动开始
                move: dragMoveListener, // 拖动中
                end: dragMoveListener   // 移动结束事件
           }
       })
}


function dragMoveListener(event: InteractEvent.InteractEvent){
    if (props.isInBigCardMode){
        positionX.value = positionX.value + event.dx / 0.9
        positionY.value = positionY.value + event.dy / 0.9
    } else {
        positionX.value = positionX.value + event.dx
        positionY.value = positionY.value + event.dy
    }
    emit('update-location', {
        index: props.tagIndexInArray,
        position: {left: positionX.value, top: positionY.value}
    })
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

42度酒和52度酒哪个好?

我们平时在聚会的时候都会喝酒&#xff0c;而在买酒时通常会看到超市或者白酒专卖店里的白酒大多都是52度或者是42度的&#xff0c;而喝酒的人当中大多对白酒没有一定的了解&#xff0c;所以在接到买酒任务的时候&#xff0c;当看到一款酒有两种度数的时候&#xff0c;就有些拿…

元宇宙营销,能够持续下去吗?

Photo by Oberon Copeland veryinformed.com on Unsplash 一场完美风暴让一些行业观察人士怀疑&#xff0c;元宇宙这个曾经营销界最喜欢的闪亮对象&#xff0c;是否正在维持生命。像ChatGPT这样的生成式人工智能(AI)已经接管了技术炒作周期&#xff1b;关键平台的参与度微乎其…

为什么要加密源代码?六款好用的源代码加密软件推荐

在当今数字化时代&#xff0c;源代码是许多企业和开发人员最重要的资产之一。无论是保护知识产权、维护竞争优势&#xff0c;还是确保应用程序的安全性&#xff0c;加密源代码都是至关重要的措施。以下将详细探讨为什么需要加密源代码&#xff0c;并推荐六款好用的源代码加密软…

手把手教你暗通道先验去雾算法

0&#xff0c;流程 暗通道先验去雾算法&#xff08;Dark Channel Prior, DCP&#xff09;是一种基于图像的去雾技术&#xff0c;由Kaiming He等人在2009年提出。这种算法利用了大气散射模型&#xff0c;通过估计大气光和图像的传输图来去除雾的影响。以下是暗通道先验去雾算法…

PLC网关:开启工业4.0时代的智能工厂之路

PLC即可编程逻辑控制器&#xff0c;是工业自动化领域的核心设备&#xff0c;广泛应用于各个工业领域。从PLC问世至今&#xff0c;一直表现出强大的生命力和高速增长态势&#xff0c;2020年全球PLC市场的销售量已经达到了百亿RMB级别。 随着行业智能化、数字化推广&#xff0c;…

Docker从入门到实践教程(电子版)

前言 Docker 是个伟大的项目&#xff0c;它彻底释放了虚拟化的威力&#xff0c;极大降低了云计算资源供应的成本&#xff0c;同时让应用的 分发、测试、部署和分发都变得前所未有的高效和轻松&#xff01; 本电子书既适用于具备基础 Linux 知识的 Docker 初学者&#xff0c;也…

hot100-5-普通数组

53最大子数组和 56合并区间 238除自身以外数组的乘积 用前缀乘积和后缀乘积 41缺失的第一个正数 189轮转数组

文本编辑三剑客(awk)

awk作为和sed、grep同级的文本处理命令&#xff0c;也又强大的文本分析功能&#xff0c;同样&#xff0c;它的原理并不困难&#xff0c;但操作很多且很杂&#xff0c;可以通过不同的需求进行自定义搭配。 awk工作原理 awk和另外两个命令的工作原理又不相同&#xff0c;当用户…

关于使用Postman在请求https网址没有响应,但是用浏览器有响应的问题解决

一、问题描述 使用postman调用正式环境的公共接口&#xff0c;无需鉴权&#xff0c;但是产生了返回状态码200&#xff0c;但是data中却无数据&#xff0c;如下 {"code": "200","message": "操作成功","data": {"qr_c…

【图解网络】学习记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 TCP/IP 网络模型有哪几层&#xff1f;键入网址到网页显示&#xff0c;期间发生了什么&#xff1f;Linux 系统是如何收发网络包的&#xff1f;NAPIHTTP 是什么&#…

Flask Bootstrap #3 - BootStrap快速入门

Reference https://www.bilibili.com/video/BV1AQe9eqEj7/?p2&spm_id_frompageDriver&vd_source3d4b12fb4a4bfbc98942d43612ae2fb9 1 BootStrap BootStrap&#xff0c;别人写好的一堆css样式&#xff0c;我们可以直接拿过来用&#xff0c;我们只要掌握两点就可以开…

【TabBar嵌套Navigation案例-自定义tabBar-封装 Objective-C语言】

一、再来说一个自定义tabbar的问题啊, 1.首先呢,这个tabbar,看起来好像效果是实现了,没有什么问题,但是说,从业务逻辑上来讲的话,这样做,是不太好的, 1)首先,我们去创建啊,我们自定义的一个UIView, UIView里边,有很多子控件,那么这个子控件,应该是写在你这个V…

kubernetes管理GUI工具Lens

从github上可以知道&#xff0c;lens的前端是用electron做的客户端工具&#xff0c;打开安装路径你会发现kubectl.exe,没错&#xff0c;就是你经常用的kubectl命令行的客户端工具。kubectl本来就能输出json的数据类型&#xff0c;集成前端更方便了。看到这里你是不是发现&#…

MoE技术揭秘——混合专家模型的计算奥秘

MoE技术揭秘——混合专家模型的计算 MoE技术的类比 你可以把MoE技术比作一个“智能团队”&#xff0c;团队中的每个成员&#xff08;专家&#xff09;都有自己擅长的领域。当面对一个问题时&#xff0c;只有擅长此问题的成员才会参与解答&#xff0c;这样既提高了效率&#xff…

如何开发属于自己直播平台的主播美颜SDK?

本篇文章&#xff0c;笔者将从需求分析、技术选型、开发流程等方面进行详细讲解。 一、需求分析 在开发美颜SDK之前&#xff0c;首先需要进行详细的需求分析。主要包括以下几个方面&#xff1a; 1.美颜功能的具体需求&#xff1a;确定美颜效果&#xff0c;包括磨皮、美白、瘦…

懂个锤子Vue 项目工程化扩展:

Vue项目工程化扩展&#x1f4f6;&#xff1a; 前言&#xff1a;当然既然学习框架的了&#xff0c;HTMLCSSJS三件套必须的就不说了&#xff1a; JavaScript 快速入门 紧跟前文&#xff0c;目标学习Vue2.0——3.0&#xff1a; 懂个锤子Vue、WebPack5.0、WebPack高级进阶 涉及的…

4418 4412 的 bl1 , bl2 的理解

之前一直 对 三星的 bl1 , bl2 不是很理解。 网上的资料 我自己的 测试&#xff1a; 我在 4418 的源码中没有找到这个 2ndboot 文件夹。

仅花3小时搭好一套仓库管理系统,老板看了直呼哇塞

公司仓库管理长期效率低下&#xff0c;让团队头疼不已。没想到&#xff0c;一位同事凭借自学的零代码系统搭建技能&#xff0c;仅用时3小时就搭建出了一套完善的仓库管理系统&#xff0c;不仅操作简便&#xff0c;还大幅提升了工作效率。老板亲自验收后连连夸赞直接给了1w奖金&…

Unity Yaml

资料 UnityYaml 项目设置 选择用于存储序列化资产的格式 Project Settings->Asset Serialization->Mode Force Text 序列化为文本文件,例如场景文件 保存为yaml格式 方便查看&#xff1b;版本控制时文本文件比二进制文件更容易合并Force Binary 序列化为二进制文件&a…

图片格式怎么转换?这几种图片格式转换方法简单又高效

图片已成为我们日常生活与工作中不可或缺的一部分。然而&#xff0c;不同平台和应用往往对图片格式有着特定的要求&#xff0c;这就使得图片格式的转换成为了一项必备技能。下面给大家分享5种能够简单高效的转换图片格式方法&#xff0c;快来一起学习下吧。 方法一&#xff1a;…