[英]How to enclose a button in RouterLink, so that the navigation does not occur on button click
假設我有以下標記:
<RouterLink tag="div" to="/somepath">
<p>Lorem ipsum dolor sit amet.</p>
...
<button>A button</button>
</RouterLink>
我正在使用tag="div"
,因為在a
元素內嵌套<button>
是無效的 HTML5 。
使用此標記,單擊RouterLink
內的任意位置(包括段落和按鈕)將導致導航。
但我的要求是點擊按鈕不會導致導航,但點擊其他元素會。
因此,我使用帶有@click
處理程序的div
來檢查單擊的元素是按鈕還是它的后代,如果不是,則僅導航:
<div @click="navigateSomewhere">
...
</div>
export default {
methods: {
navigateSomewhere($event) {
if(!$event.closest("button"))
this.$router.push("/somePath")
}
}
}
但我想知道是否有更清潔的方法來做到這一點。
我還創建了一個 MCVE: https ://codesandbox.io/s/vue-routerlink-button-3dlyx。
<button @click.prevent="">A button</button>
這是因為按鈕位於“點擊區域”下,這意味着它不是可定位的,請嘗試將相對位置和 z-index: 99 設置為按鈕,並讓我知道
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.