最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Vue事件绑定怎么传参 如何利用修饰符防止点击冒泡的实战技巧
时间:2026-07-06 11:24:57 编辑:袖梨 来源:一聚教程网
Vue事件绑定传参需据参数固定性、是否需原生event及修饰符控制来选择:模板直传适用于固定值;需event时须显式写$event;.stop用于阻止冒泡;.self实现仅自身触发;.capture.stop用于捕获阶段拦截。
Vue事件绑定传参很灵活,关键看参数是否固定、是否需要原生事件对象,以及是否要配合修饰符做行为控制。阻止冒泡不是“加个.stop就行”,得结合场景选对方式。
模板中直接传参:适合固定值
最常用也最直观的方式,把参数写在事件绑定里:
-
@click="handleClick('确认删除')"—— 字符串、数字、布尔值都能直接传 - 多个参数用逗号分隔:
@click="handleClick(id, 'edit', true)" - 注意:此时原生 event 对象不会自动传入,如需它,必须显式写
$event
传入原生 event 对象:需要坐标、target 等信息时
当你要读取点击位置、判断点击的是哪个子元素,或想手动调用 stopPropagation(),就得把 $event 显式传进去:
@click="handleClick($event, 'submit')"- 方法里接收顺序要一致:
handleClick(event, action) - 这样你既能拿到自定义参数,也能操作原生事件的
target、clientX等属性
用 .stop 阻止冒泡:最简方案,优先推荐
父容器和子按钮都有 click 事件时,点按钮不希望触发父级逻辑,加 .stop 就行:
立即学习“前端免费学习笔记(深入)”;
<div @click="closePanel"><button @click.stop="confirmDelete">确定</button></div>- 修饰符写在事件名后、括号前,顺序敏感:
@click.stop.prevent是先阻止冒泡再阻止默认行为 - 不需要改 JS 逻辑,模板层就干净解决,可读性强
用 .self 实现“仅点空白处才响应”
有些交互要求只在元素自身区域点击才触发,比如点击弹窗背景关闭,但点里面的内容不关:
<div class="modal" @click.self="hideModal"><div class="content">正文</div></div>- 点
.content不会触发hideModal,因为事件是从子元素冒泡上来的 - 点
.modal的 padding 或背景区域才会触发,天然适配“点击外部关闭”需求
进阶:捕获阶段 + stop 组合处理特殊嵌套
极少数情况,父组件需要在事件到达子组件前就拦截(比如全局快捷键监听),可用 .capture:
<div @click.capture.stop="handleGlobalClick"><button @click="handleBtn">按钮</button></div>- 点击按钮时,
handleGlobalClick在捕获阶段立即执行,并被.stop阻断后续传播,handleBtn根本不会触发 - 这种写法要谨慎,容易破坏预期事件流,建议只用于明确需要提前拦截的场景
相关文章
- Excel中怎样显示fx栏 07-06
- 梦幻时装周:漫天飞舞奇景 07-06
- 揭秘广式桑拿鸡做法 07-06
- PDF转BMP:CAJ工具操作指引 07-06
- caj转PDF工具使用手册 07-06
- 推荐免费无限制CAJ转Word工具 07-06