0Pricing
Vue Academy · 课时

v-on 事件修饰符

.stop、.prevent、.self、.once、.capture、.passive——了解每个修饰符的使用时机和原因。

v-on 事件修饰符 是 CoddyKit 上的免费 Vue Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Vue Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Vue Academy 课程共包含 4 节课。

更简洁的事件处理

v-on 指令(简写为 @)用于添加事件监听器。事件修饰符是用于处理常见 DOM 工作的后缀,例如阻止事件传播或阻止默认行为,从而让处理函数专注于逻辑。

修饰符解决的问题

没有修饰符时,您需要在处理函数中反复编写 DOM 样板代码:调用 event.preventDefault() 或 event.stopPropagation()。修饰符会以声明式方式将这些操作移入模板。

.stop 用于 stopPropagation

.stop 会阻止事件冒泡到父元素,相当于调用 event.stopPropagation()。

<!-- inner click will not reach the outer handler -->
<div @click="onOuter">
  <button @click.stop="onInner">Click</button>
</div>

.prevent 用于 preventDefault

.prevent 会调用 event.preventDefault()。典型用途是在提交表单时阻止页面重新加载。

<form @submit.prevent="onSubmit">
  <button type="submit">Save</button>
</form>

组合修饰符

您可以组合使用多个修饰符。顺序很重要,它们会从左到右依次应用。

<a @click.stop.prevent="onClick">Link</a>

.self:仅限元素自身

.self 仅在事件目标就是该元素本身时触发处理函数,而不会响应从子元素冒泡上来的事件。它非常适合用于覆盖层背景。

<!-- closes only when the backdrop itself is clicked -->
<div class="backdrop" @click.self="close">
  <div class="modal">...</div>
</div>

按键修饰符

对于键盘事件,您可以监听特定按键。@keyup.enter 仅在 Enter 键松开时触发。

<input @keyup.enter="search" />

更多按键修饰符

Vue 为常用按键提供了别名:.enter、.esc、.tab、.delete、.space,以及 .up 和 .down 等箭头键修饰符。

<input @keyup.esc="cancel" @keyup.up="previous" />

.once:处理函数仅触发一次

.once 最多运行处理函数一次,随后移除监听器。它适用于欢迎提示关闭等一次性操作。

<button @click.once="initialize">Start</button>

.passive 提升滚动性能

.passive 会告知浏览器处理函数不会调用 preventDefault()。这样浏览器无需等待即可流畅滚动,从而提升触摸和滚动事件的性能。

<div @scroll.passive="onScroll">...</div>

选择合适的修饰符

  • .stop — 阻止冒泡。
  • .prevent — 阻止默认行为。
  • .self — 忽略从子元素冒泡上来的事件。
  • .once — 只运行一次。
  • .passive — 永不阻止默认行为;更有利于滚动性能。

注意:请勿将 .passive 与 .prevent 组合使用,它们相互矛盾。

快速检查

请选择正确的修饰符。

回顾

事件修饰符可以让处理函数保持简洁:

  • .stop = stopPropagation,.prevent = preventDefault。
  • .self 仅在元素自身触发。
  • .enter 等按键修饰符可以指定特定按键。
  • .once 只运行处理函数一次;.passive 可以提升滚动性能。

常见问题解答

「v-on 事件修饰符」课时是免费的吗?

是的 — 「v-on 事件修饰符」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Vue Academy 课程的其余内容,请升级到 CoddyKit PRO。 Vue Academy 课程共包含 4 节课。

「v-on 事件修饰符」这节课中我会学到什么?

.stop、.prevent、.self、.once、.capture、.passive——了解每个修饰符的使用时机和原因。 你通过在浏览器中直接运行的动手代码来练习 Vue Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Vue Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Vue Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「v-on 事件修饰符」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Vue Academy 课中编写并运行代码吗?

能。每节 Vue Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. v-model:双向绑定的内部机制
  2. v-on 事件修饰符
  3. v-bind 动态绑定与多重绑定
  4. 编写自定义指令
← 返回 Vue Academy