【发布时间】:2018-08-24 13:05:09
【问题描述】:
我在 Vue 中有一个带有单击事件的菜单按钮。单击按钮时,它应该激活菜单本身。这是在单击时激活菜单的父元素(toggleMenu 函数使menuIsActive 为真)。这部分工作正常:
<div class="navbar-item has-dropdown @click="toggleMenu">
<div class="navbar-link"></div>
<app-navmenu :class="{'is-active': menuIsActive}"/>
</div>
这是被渲染的app-navmenu 组件:
<div class="navbar-dropdown" @click.stop>
<div class="container is-fluid">
<div class="column">
<h1 class="title">Title</h1>
<router-link class="navbar-item" :to="route" exact>
<div class="navbar-content">
<p class="has-text-info">info</p>
<small>meta info</small>
</div>
</router-link>
</div>
</div>
</div>
我遇到的问题是,当我单击实际的navbar-dropdown div 元素时,我不希望菜单消失,因此我有一个@click.stop。但是,当我单击router-link 元素时,我确实希望菜单消失,但由于navbar-dropdown 元素中有@click.stop,因此菜单仍然存在。如果我在navbar-dropdown 元素上没有@click.stop 事件,那么只要单击navbar-dropdown 元素,菜单就会消失,这是我不想要的。
如何在单击下拉正文时使菜单保持不变,但在单击路由器链接时又使其消失?我尝试过其他点击方法,如 .self 和 .prevent,但这些方法似乎无法满足我的需求。
【问题讨论】:
-
我不太确定,你能通过列出来解释吗?单击下拉菜单时,您希望出现菜单,单击路由器链接时您希望菜单消失?
-
默认行为是,一旦菜单被激活,如果我点击一个链接或菜单正文,它就会消失。如果单击正文,我希望菜单保持不变,但如果单击链接,我希望它消失。
-
如果将 .stop 放在点击事件上会发生什么?默认行为 - 如果我单击正文或菜单中的链接,菜单将消失。抱歉,还没说到重点……你能想象一下吗?