【发布时间】:2021-01-31 16:23:21
【问题描述】:
假设,我有以下标记:
<RouterLink tag="div" to="/somepath">
<p>Lorem ipsum dolor sit amet.</p>
...
<button>A button</button>
</RouterLink>
我使用tag="div",因为在a 元素is not valid HTML5 中嵌套了<button>。
使用此标记,单击@987654327@ 内的任意位置(包括段落和按钮)将导致导航。
但我的要求是点击按钮不会导致导航,但点击其他元素会。
所以,我使用div 和@click 处理程序来检查单击的元素是按钮还是它的后代,如果不是,则仅导航:
<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。
【问题讨论】:
标签: javascript html vue.js vue-router