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

 更新时间:2025年06月17日 16:19:32   作者: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" 想象成:

  • 你点按钮 → 浏览器 “扔出” 一个事件对象 → Vue 自动 “接住”,并把它当 “默认礼物” 塞给 greet 方法。
  • 方法里的参数名(比如 cusEvent),就像你给这个 “礼物” 起的外号,叫啥都行,只要能拿到里面的信息。

方式 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 个 “礼物”

  • 第一个礼物:你手动写的 '额外信息'(自定义参数)。
  • 第二个礼物:必须用 $event 这个 “固定包装”,把事件对象包起来传过去。

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

两种方式的核心区别

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

举个生活例子加深理解

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

  • 方式 1:客人只说 “结账”(@click="greet"),系统自动给你递上 “账单”(事件对象),你直接处理账单(greet(cusEvent))。
  • 方式 2:客人说 “结账,再加一份小吃”(@click="greet2('加小吃', $event)"),你需要同时拿到 “账单”(事件对象,用 $event 传)和 “加小吃” 的要求(自定义参数),再一起处理。

总结

  • 事件对象 是浏览器给的 “事件详情包”,Vue 提供了 2 种拿包方式。
  • 简单场景用 方式 1(自动接收),复杂场景(需要传额外数据)用 方式 2$event 手动传)。
  • 记住 $event 是 Vue 规定的 “传事件对象的固定语法”,而方法里的参数名可以自己随便取~

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

相关文章

  • vue2.0使用Sortable.js实现的拖拽功能示例

    vue2.0使用Sortable.js实现的拖拽功能示例

    本篇文章主要介绍了vue2.0使用Sortable.js实现的拖拽功能示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • Vue 浏览器本地存储的问题小结

    Vue 浏览器本地存储的问题小结

    这篇文章主要介绍了Vue 浏览器本地存储,LocalStorage 和 SessionStorage 统称为 WebStorage,存储大小一般支持5mb左右,但是不同的浏览器也有区别,具体内容介绍跟随小编一起看看吧
    2022-04-04
  • Vue中router-link常用属性使用案例讲解

    Vue中router-link常用属性使用案例讲解

    这篇文章主要介绍了Vue中router-link常用属性使用案例讲解,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 详解vue.js2.0父组件点击触发子组件方法

    详解vue.js2.0父组件点击触发子组件方法

    本篇文章主要介绍了详解vue.js2.0父组件点击触发子组件方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • vue-cli3.0如何使用CDN区分开发、生产、预发布环境

    vue-cli3.0如何使用CDN区分开发、生产、预发布环境

    这篇文章主要介绍了vue-cli3.0如何使用CDN区分开发、生产、预发布环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue如何使用driver.js实现项目功能向导指引

    vue如何使用driver.js实现项目功能向导指引

    driver.js 是一个轻量级、无依赖的原生JavaScript引擎,在整个页面中驱动用户的注意力,强大的、高度可定制的原生JavaScript引擎,无外部依赖,支持所有主流浏览器,这篇文章主要介绍了vue如何使用driver.js实现项目功能向导指引,需要的朋友可以参考下
    2023-03-03
  • 对vue中的input输入框进行邮箱验证方式

    对vue中的input输入框进行邮箱验证方式

    这篇文章主要介绍了对vue中的input输入框进行邮箱验证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue中el-autocomplete与el-select的异同

    vue中el-autocomplete与el-select的异同

    本文主要介绍了vue中el-autocomplete与el-select的异同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Vue动态类的几种使用方法总结

    Vue动态类的几种使用方法总结

    这篇文章主要介绍了Vue动态类的几种使用方法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 在VUE style中使用data中的变量的方法

    在VUE style中使用data中的变量的方法

    这篇文章主要介绍了在VUE style中使用data中的变量的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论