在Vue中将多个事件绑定到v-on指令

2023-11-25

在 jQuery 中,您可以通过执行以下操作来绑定多个事件:

$('#myDiv').on('touchstart mousedown', // more code here

据我了解,这会监听touchstart OR mousedown同时地。但我不知道如何用 Vue 做同样的事情。我只能做@touchstart="doSomething()" or @mousedown="doSomething()"。我错过了一些明显的事情吗?谢谢


1. 使用事件修饰符

如果你依赖events,你可以尝试绑定事件修饰符并将它们内联起来。就像是:

<a @click.stop="doThis" @click.right="showContextMenu"></a>

2. 以编程方式附加事件

或者,您可以创建事件列表及其各自的实现来附加并执行循环v-on,一种解决方法这个帖子:

created() {
    const EVENTS = [
      {name: 'my-event1', callback: () => console.log('event1')},
      {name: 'my-event2', callback: () => console.log('event2')},
      {name: 'my-event3', callback: () => console.log('event3')}
    ]

    for (let e of EVENTS) {
      this.$on(e.name, e.callback); // Add event listeners
    }
  }
  
<button @click="$emit('my-event1')">Raise event1</button>
<button @click="$emit('my-event2')">Raise event2</button>
<button @click="$emit('my-event3')">Raise event3</button>

3. v-on多个值

否则,就像你可以做的那样v-bind多个值,你实际上可以做同样的事情v-on对于事件。

<div id="mydDiv" v-on="handlers"></div>

// ...

data() {
  const vm = this;
  
  return {
    handlers: {
      mousedown: vm.divMousedown,
      touchstart: vm.divTouchstart
    }
  }
},

methods: {
  divMousedown() {
    console.log('event: mousedown');
  },
  divTouchstart() {
    console.log('event: touched');
  }
}

如果您需要按事件类型分解处理程序,请尝试检查type当事件被触发时,所以在你的情况下,因为touchstart似乎也触发mousedown, 也许:

methods: {
  onTouched(evt) {
    evt.preventDefault();

    if (evt.type === 'mousedown') {
        // handle mousedown
    }
    else if (evt.type === 'touchstart') {
        // ...
    }
  }
}

Note: 你可能想打电话preventDefault() on touchmove而不是touchstart。这样,鼠标事件仍然可以触发,并且链接之类的东西将继续工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Vue中将多个事件绑定到v-on指令 的相关文章

随机推荐

  • CSS数据属性条件值选择器?

    给定 html 例如 div Jonh div div Jack div div Julian div 如何选择价值优于的元素1000 x gt 1000 首选项 通过 CSS 选择器 如果没有这样的事情 那么我将重新要求 JQuery J
  • 将参数从气流运算符传递给 SQL 模板

    如果我将 BigQueryOperator 与 SQL 模板结合使用 如何将参数传递给 SQL File sql 查询 sql SELECT FROM dataset task instance variable for execution
  • 如何一次从 3 个给定点绘制连续曲线

    我正在尝试在 Flash 中绘制一条连续的曲线 方法有很多 但到目前为止我发现没有一个完全符合我的要求 首先 我想使用 flash 图形 api 的 curveTo 方法 我不想每个曲线段对 lineTo 进行数百次调用来模拟曲线 根据我的
  • 使 Django forms.DateField 显示使用本地日期格式

    我正在尝试找到一种简单的方法来构建以澳大利亚格式 dd mm yyyy 显示日期的表单 这是我能找到的唯一方法 看来应该有更好的解决方案 注意事项 创建了一个新的小部件 以 dd mm yyyy 格式呈现日期值 创建了新的日期字段 将定位日
  • 如何在 Laravel 4 路由组上应用多个过滤器?

    Laravel 4 中是否可以在组路由上添加多个过滤器 对于以 API 为中心的应用程序 我有 2 种身份验证方法 一种具有标准身份验证 针对网站过滤器 auth 一种具有令牌 针对移动应用程序过滤器 auth token 理想情况下我希望
  • 具有多个存储的 CoreData:配置问题

    我有一个 iOS 项目 其中有一个大型预加载数据库和一个小型用户数据库 都是 CoreData SQLite 存储 前面的问题建议使用配置来控制哪些实体与哪个商店一起使用 我很难让它发挥作用 这就是我一直在尝试的 NSManagedObje
  • 如何覆盖图像元数据?

    如果 key val 已存在于 CGImageDestination 的原始图像元数据中 我似乎无法将图像元数据正确写入图像 如果它们的键 值不存在于原始元数据中 它就可以正常工作 几乎就像原始图像中的图像元数据属性优先于修改一样 这是我不
  • 如何在ggplot2中使用geom_sf获得多边形边界

    这个问题之前已经被问过一个旧线程 但接受的答案目前在当前版本的 ggplot2 中不再有效 这是一个最小的例子 library ggplot2 library rnaturalearth world ne countries scale m
  • 如何创建一个缓存对象的类?

    我对 C 中的泛型很陌生 我正在尝试创建一个存储 程序的其他部分可以请求模型对象 这个想法是 如果我的缓存类有该对象 它会检查其日期 如果该对象不早于 10 分钟 则返回该日期 如果它早于 10 分钟 它会从在线服务器下载更新的模型 如果它
  • 理查森-露西算法如何工作?代码示例?

    我试图弄清楚反卷积是如何工作的 我理解它背后的想法 但我想了解一些实现它的实际算法 这些算法将模糊图像及其点样本函数 模糊内核 作为输入 并生成潜在图像作为输出 到目前为止我发现理查森 露西算法 其中数学似乎并不那么困难 但我无法弄清楚实际
  • 为什么我无法重写接口方法?

    假设我有一个如下界面 interface CardHolder IEnumerable
  • Scala:如何继承“静态槽”?

    嗯 我正在学习 Scala 所以这个问题对于大多数人来说可能太基础了 在 Java 中 我可以在类中拥有静态槽 函数或变量 然后我也会在继承类中拥有该槽 在 Scala 中 我没有静态槽 但有伴生对象 但我发现这些对象不是继承类的一部分 所
  • 如何使用ABCPdf.NET从PDF文件的所有页面中提取文本?

    如何使用ABCPdf NET工具从PDF文件中提取内容文本 我尝试了 GetText 方法 但没有提取内容 var doc new Doc var url FileName pdf doc Read url string xmlConten
  • 客户端 HTML 清理有多安全?

    我最近一直在研究 Pagedown js 因为在我的页面上使用 mark down 而不是丑陋的只读文本区域的吸引力 不过 我非常谨慎 因为欺骗经过消毒的转换器似乎很容易 我已经看到了一些关于 Angular js 及其 html 绑定的讨
  • 如何使用ajaxStart显示加载微调器?

    我有一个使用命令 shell exec 运行 python 脚本的网页 我想要一个加载微调器 在 python 脚本运行时显示 请稍候此页面加载 之类的消息 然后在完成后显示其余的回显 HTML 我找到了一个似乎不错的解决方案https s
  • 生成迷宫的好算法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 假设你想要一个 N M 网格上的简单迷宫 有一条路径通过 并且有很多死胡同 但这看起来 正确 即就像有人手工制作的 没有太多微小的死胡同和所有这些
  • org.apache.spark.rpc.RpcTimeoutException:Futures 在 [120 秒] 后超时。这个超时由spark.rpc.lookupTimeout控制

    将 Spark 应用程序提交到 YARN 时 出现与容器相关的以下错误 HADOOP 2 7 3 SPARK 2 1 环境在单节点集群中运行伪分布式模式 该应用程序在本地模型中运行时可以完美运行 但是尝试使用 YARN 作为 RM 在集群模
  • 在Android中以编程方式创建基于VpnService的L2TP/IPSec VPN

    我搜索了一天 关于基于VpnService创建L2TP IPSec VPN 但没有匹配到的结果 使用本地VPN https github com hexene LocalVPN 我可以基于 VPNService 创建一个 VPN OpenV
  • Solr - 如何“分组”和“限制”?

    假设我从数据库中索引了以下内容 Id Code Description 1 A1 Hello world 2 A1 Hello world 123 3 A1 World hello hi 4 B1 Quick fox jumped 5 B1
  • 在Vue中将多个事件绑定到v-on指令

    在 jQuery 中 您可以通过执行以下操作来绑定多个事件 myDiv on touchstart mousedown more code here 据我了解 这会监听touchstart OR mousedown同时地 但我不知道如何用