vue中的v-on事件监听机制

本文详细介绍了Vue.js中如何使用v-on指令监听DOM事件,包括常见事件类型及事件简写形式。同时,深入探讨了如何利用按键修饰符实现特定按键触发事件的功能,提供了实用的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听dom事件使用v-on指令: v-on:事件类型="一个函数" 这个事件类型可以自定义
简写: @事件类型="一个函数"⭐

1、作用:绑定事件监听,表达式可以是一个方法的名字或一个内联语句,
如果没有修饰符也可以省略,用在普通的html元素上时,只能监听 原生
DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。

2、常用事件:
v-on:click
v-on:keydown
v-on:keyup
v-on:mousedown
v-on:mouseover
v-on:submit
....

3、示例:
<!-- 方法处理器 -->
<button v-on:click="doThis"></button>
<!-- 内联语句 -->
<button v-on:click="doThat('hello', $event)"></button>

<!-- 阻止默认行为,没有表达式 -->
<form v-on:submit.prevent></form>

5、v-on的缩写形式:可以使用@替代 v-on:
<button @click="doThis"></button>


6、按键修饰符
触发像keydown这样的按键事件时,可以使用按键修饰符指定按下特殊的键后才触发事件

写法:
<input type="text" @keydown.enter="kd1"> 当按下回车键时才触发kd1事件

由于回车键对应的keyCode是13,也可以使用如下替代
<input type="text" @keydown.13="kd1"> 当按下回车键时才触发kd1事件

但是如果需要按下字母a(对应的keyCode=65)才触发kd1事件,有两种写法:
1、由于默认不支持a这个按键修饰符,需要Vue.config.keyCodes.a = 65 添加一个对应,所以这种写法为:

Vue.config.keyCodes.a = 65
<input type="text" @keydown.a="kd1"> 这样即可触发

2、也可以之间加上a对应的数字65作为按键修饰符
<input type="text" @keydown.65="kd1"> 这样即可触发

键盘上对应的每个按键可以通过 http://keycode.info/ 获取到当前按下键所对应的数字

转载于:https://www.cnblogs.com/mushitianya/p/10505584.html

### 关于 Vue3 中 `v-on` 和 `v-find` 的用法及区别 #### `v-on` 指令的用法 在 Vue3 中,`v-on` 是一个用于绑定事件监听器的核心指令。它允许开发者将 DOM 事件与组件中的方法或其他逻辑关联起来。通过 `v-on`,可以轻松处理用户的交互行为,例如点击按钮、输入框变化等。 以下是 `v-on` 的基本语法和示例: ```vue <template> <button v-on:click="handleClick">Click Me</button> </template> <script> export default { methods: { handleClick() { console.log('Button was clicked!'); } } }; </script> ``` 上述代码展示了如何使用 `v-on` 绑定一个点击事件到 `handleClick` 方法上[^1]。 此外,在 Vue3 中还支持简写形式,即 `@event-name` 替代完整的 `v-on:event-name` 表达方式。因此,上面的例子也可以写作如下: ```vue <template> <button @click="handleClick">Click Me</button> </template> ``` 这种简化书写提高了开发效率并使模板更加清晰易读。 #### 对于 `v-find` 的说明 需要注意的是,“`v-find`” 并不是 Vue 官方文档中定义的标准指令之一。如果提到此名称,则可能是自定义指令或者是第三方插件的一部分功能实现。官方核心指令列表里并未包含名为 “find”的选项[^2]。 假如存在某个特定场景下使用的所谓“`v-find`”,那很可能是由项目团队自行创建的一个工具来满足特殊需求。比如查找子节点或者动态定位某些 HTML 元素之类的操作。然而这完全取决于具体应用环境下的设计思路和技术选型情况而定。 如果有确切的需求背景或上下文描述关于这个假想出来的特性的话,那么可以根据实际情况进一步探讨其实现机制以及可能的应用场合等问题。 #### 总结两者差异 综上所述,`v-on` 属于 Vue 原生提供的重要内置指令,专门用来管理各种类型的用户界面事件响应;相对而言,“`v-find`” 如果确实存在于某处则更倾向于是一种扩展性质的存在——无论是作为社区贡献还是个人作品成果均有可能只是局部适用而非普遍通用标准组成部分而已。 ```javascript // 示例:Vue 自定义指令模拟 'v-find' 功能 app.directive('find', { mounted(el, binding) { const targetElement = document.querySelector(binding.value); if (targetElement) { el.style.backgroundColor = 'lightblue'; console.log(`Found element: ${binding.value}`); } else { console.warn(`No matching element found for selector "${binding.value}"`); } }, }); ``` 以上是一个简单的例子展示如何构建自己的 Vue 指令去尝试模仿所谓的寻找目标的功能效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值