【问题标题】:Vue/Buefy - Hide dropdown on router-link click / SPAVue/Buefy - 隐藏路由器链接点击/SPA 上的下拉菜单
【发布时间】:2018-08-22 19:20:22
【问题描述】:

我在使用 Buefy 和 Vue 时遇到了一些问题。我有一个简单的 SPA(单页应用程序),它使用 vue-router。我有一个如下所示的下拉列表:

  <b-dropdown class="user-dropdown" v-model="navigation" position="is-bottom-left">
    <a class="navbar-item" slot="trigger">
      <span class="tag is-rounded has-text-weight-semibold avatar">OB</span>
    </a>
    <div class="columns is-marginless">
      <div class="column has-text-centered">
        <router-link to="home">
          <b-icon class="is-large is-size-4" icon="ion-ionic ion-ios-search"></b-icon>
        </router-link>
      </div>
      <div class="column has-text-centered">
        <router-link to="dashboard">
          <b-icon class="is-large is-size-4" icon="ion-ionic ion-ios-contact"></b-icon>
        </router-link>
      </div>

    </div>
  </b-dropdown>

让下拉菜单显示效果很好。如果我单击页面上可见下拉列表之外的任何位置,它也会隐藏。

我的问题是,我有一个单页应用程序,所以当我“更改”页面(单击链接)时,页面更改时下拉菜单仍然可见。

示例:

在下面的页面上:

www.example.com/#/home

我单击打开的下拉菜单,然后单击dashboard 链接,这给了我:

www.example.com/#/dashboard

但下拉菜单仍然可见。

任何人都知道我该怎么做,所以当我点击其中的链接时下拉菜单会切换?

更新: 我在 Chrome 中使用 Vue Dev 工具,我可以看到,当我点击下拉菜单使其切换到活动状态时,我看到了这个:

name:"active-change"
type:"$emit"
source:"<BDropdown>"
payload:Array[1]
0:true

当我单击页面上的任意位置以关闭下拉菜单时,它看起来像这样:

name:"active-change"
type:"$emit"
source:"<BDropdown>"
payload:Array[1]
0:false

【问题讨论】:

    标签: javascript vue.js bulma buefy


    【解决方案1】:

    无论下拉列表查看状态都不会改变,因为在 SPA 中它只是 javascript。我不知道有关 Buefy 的细节,但您必须在路由器负载时设置状态变量,或者观察某种变量来告诉菜单您应用程序的另一部分中的某些内容不同。

    【讨论】:

    • 刚刚更新了我的原始问题以包括事件,如果这有任何帮助的话。我还是 Vue 的新手——所以只是尝试学习基础知识。
    • 看起来它正在从组件发出自定义事件。这意味着调用组件的父级应该有一个冒泡事件调用的方法。 Vue docs regarding custom events behavior
    • 如果我使用@click.native,我可以触发我在methods() 中定义的函数。但是,当我单击下拉列表中的 &lt;router-link&gt; / &lt;a&gt; 时,我无法弄清楚如何隐藏下拉列表。
    • 你能粘贴一些你说的组件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多