【问题标题】:v-if preventing bootstrap dropdown from expandingv-if 防止引导下拉菜单扩展
【发布时间】:2017-02-27 23:10:26
【问题描述】:

我在 v-if 语句中发现了非常奇怪(没有提到令人沮丧的)问题。基本上我试图根据用户权限隐藏侧边栏下拉菜单,事情是当我添加 v-if 语句时,当用户刚刚登录时下拉菜单停止工作;然后,当用户刷新页面时,一切正常。

<li v-if="getUser.permissions && getUser.permissions.includes('some-permission')" >
      <a data-toggle="dropdown" class="dropdown-toggle" href="#">
          <i class="fa fa-flask"></i><span v-show="isMaximized">Genetics<i class="fa arrow"></i></span>
      </a>
      <ul class="nav nav-second-level collapse">
          <li>
              <router-link to="/route1"><i class="fa fa-bar-chart"></i> <span class="nav-label">Element 1</span></router-link>
          </li>
          <li>
              <router-link to="/route2"><i class="fa fa-refresh"></i> <span class="nav-label">Element 2</span></router-link>
          </li>
          <li>
              <router-link to="/route3"><i class="fa fa-list"></i> <span class="nav-label">Element 3</span></router-link>
          </li>
          <li>
              <router-link to="/route4"><i class="fa fa-leaf"></i> <span class="nav-label">Element 4</span></router-link>
          </li>
      </ul>
  </li>

如果我删除检查权限的 v-if,下拉菜单可以正常工作,但如果我把它放回去,用户需要刷新页面才能正常工作。

注意:getUser 是一个获取用户信息的 vuex getter。当主组件加载时,用户信息在 vuex action 中从本地存储中获取,然后将其保存到名为 user 的变量中的应用程序状态中,该变量由我之前提到的那个 getter 返回。

有什么可能会影响它的想法,甚至是解决这个问题的解决方法吗?

【问题讨论】:

  • 您的控制台有错误吗?另外,您能否定义“不工作”
  • 什么都不做,就是什么都不做
  • 你使用的是什么版本的 Bootstrap?
  • 我正在使用 bootstrap v3.3.6
  • 您似乎缺少一些基本的 Bootstrap 下拉类,例如 dropdown(在容器上)和 dropdown-menu 在菜单列表中。这是一个工作演示~jsfiddle.net/a1h0c27j

标签: twitter-bootstrap vue.js vuejs2


【解决方案1】:

据我了解,您需要在v-if 生效并显示元素之后手动调用$('.element').dropdown()。

就个人而言,我会将此元素提取到组件中并在mounted() 生命周期事件中调用$('.element').dropdown(),但当然还有其他方法可以做到这一点:)

【讨论】:

  • 刚试过这个没有成功:(在我的mounted函数中,我添加$('#genetics-dropdown').dropdown();是#genetics-dropdown内部ul(应该包含下拉菜单的那个。我是加错了吗?
  • 只是为了确保我的观点有效,v-show 是否可以代替 v-if 工作?
  • 不,Bootstrap 在document 级别使用事件委托来检测[data-toggle="dropdown"] 元素上的事件
  • 我遇到了导航栏中有多个下拉菜单的问题。并且基于某些条件,我使用 v-if/else 在它们之间切换。但这行不通。我试过 v-show,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2014-04-28
  • 2017-03-06
  • 2014-11-08
  • 2015-08-08
  • 1970-01-01
相关资源
最近更新 更多