vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue事件处理中的事件对象的获取

Vue事件处理中的事件对象的获取实现方式

作者:WZMeiei

这篇文章主要介绍了Vue事件处理中的事件对象的获取实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

事件对象 是浏览器在触发事件(比如点击按钮)时,自动生成的一个 “数据包”,里面存着事件的详细信息(比如点了哪个按钮、点在页面的坐标、事件类型是点击还是输入)。

Vue 里有 2 种方式拿到这个 “数据包”,本质都是为了拿到事件信息做交互,只是用法场景不同。

方式 1:方法参数自动接收(最简单常用)

场景:你只需要事件对象,不需要传额外参数时,用这种方式。

代码示例

<!-- 按钮点击时,Vue 会自动把事件对象传给 greet 方法 -->
<button @click="greet">点我Greet</button>
greet(cusEvent) { 
  // cusEvent 就是事件对象!名字你随便取(比如 e、event、myEvent 都可以)
  console.log(cusEvent.target.tagName); // 打印触发事件的标签名(比如 BUTTON)
}

类比理解

@click="greet" 想象成:

方式 2:用 $event 手动传递(需要传额外参数时用)

场景:你不仅需要事件对象,还想传其他参数(比如 ID、状态)时,必须用 $event 手动把事件对象传过去。

代码示例

<!-- 点击时,主动用 $event 把事件对象传给 greet2,同时还能传其他参数(比如 '额外信息') -->
<button @click="greet2('额外信息', $event)">点我Greet2</button>
greet2(msg, event) { 
  // msg 是你传的 '额外信息',event 是 $event 对应的事件对象,这个名字可以自己定义
  console.log(msg); // 打印:额外信息
  console.log(event.clientX); // 打印点击位置的 X 坐标
}

类比理解

@click="greet2('额外信息', $event)" 想象成:

你点按钮时,想给 greet2 方法传 2 个 “礼物”

方法里的参数(msg, event)要和传递顺序对应,这样才能正确拿到两个 “礼物”。

两种方式的核心区别

对比项方式 1(自动接收)方式 2(用 $event 手动传)
何时用只需要事件对象,不需要额外参数时需要同时传事件对象 + 其他自定义参数时
模板写法@click="方法名"(无需传参)@click="方法名(自定义参数, $event)"
方法参数名自定义(比如 cusEvent、e 都行)要和传递顺序对应(比如 msg, event)
是否依赖 $event不依赖,Vue 自动传事件对象必须用 $event 手动传事件对象

举个生活例子加深理解

假设你是餐厅服务员(方法),客人(按钮)点餐(触发事件):

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文