我有这样的逻辑:用户是V2使用用户到subHeaderRouter.router
中的网址。如果用户未启动this.openModal
:
<router-link
v-for="subHeaderRouter in subHeaderRouters"
:to="subHeaderRouter.router"
@click="handleOpenModal()">
</router-link>
handleOpenModal () {
if (this.IsV2User) return
this.openModal('changeUserType', 'user.changeUserType')
}
我现在唯一需要做的就是停止:to
然后她的用户不是V2。怎么做到这一点?
答案 0 :(得分:12)
您可以通过指定无事件来监听和手动处理<router-link>
事件来阻止默认click
行为:
<router-link
v-for="subHeaderRouter in subHeaderRouters"
event=""
:to="subHeaderRouter.router"
@click.native.prevent="handleOpenModal(subHeaderRouter.router)"/>
handleOpenModal(route) {
if (this.IsV2User) {
this.$router.push(route)
} else {
this.openModal('changeUserType', 'user.changeUserType')
}
}
答案 1 :(得分:0)
在 Vue3 中,event
已从 "<router-link>
变为 removed,您需要改用 v-slot API。
<router-link :to="yourRoute" custom v-slot="{ href, navigate }">
<a v-if="yourBoolean" @click="handleEvent()">Run the function</a>
<a
v-else
:href="href"
@click="navigate">
Go to route in "to"
</a>
</router-link>
// Vue 3 Composition API
export default {
setup() {
const handleEvent = () => {
// Add your logic here
}
}
};
快乐编码! ?