當用戶在頁面上進行點擊操作時,事件會自動冒泡,即從子元素傳遞到父元素。Vue 團隊為了處理這種操作,提供了一個 .stop 修飾符,可以防止事件冒泡。
.stop 的用法很簡單,只需要在事件處理器中加上 .stop 修飾符即可:
<div @click.stop="handleClick"> <!-- ... --> </div>
這里的 @click,是一個縮寫語法,實際上綁定了 click 事件,也可以寫成 @click.stop
使用 .stop 修飾符后,點擊子元素時,該事件將不再傳遞到父元素中,直接停止該事件的冒泡。
除了 .stop 修飾符,Vue 還提供了 .prevent 修飾符,更方便地阻止默認行為,比如阻止表單提交。
<form @submit.prevent="onSubmit"> <!-- ... --> </form>
上面的代碼中,.prevent 修飾符阻止了表單默認提交行為。
除了 .prevent 和 .stop 修飾符,Vue 還提供了 .capture 修飾符,可以觸發(fā)父元素事件處理器,在子元素處理器之前執(zhí)行。
大部分情況下,我們會以父元素為容器,將所有子元素的事件綁定在父元素上。這種情況下,.capture 修飾符就會很有用。使用 .capture 修飾符,可以監(jiān)聽到子元素事件,然后執(zhí)行父元素事件處理器,如下所示:
<!-- 點擊子元素時,先執(zhí)行父元素處理器,再執(zhí)行子元素處理器 --> <div @click.capture="parentClick"> <div @click="childClick"></div> </div>
以上就是 Vue 中使用修飾符,阻止冒泡的方法,可以根據(jù)實際需求選擇不同的修飾符。