获取 BootstrapVue 下拉列表(b-dropdown)以在单击按钮时显示

Get BootstrapVue Dropdown (b-dropdown) to show when clicking a button

使用 Vue.js 2.6.10 和 BootstrapVue 2.0.0-rc.20 并尝试在单击单个文件组件中的单独按钮时以编程方式显示下拉列表。

<template lang='pug'>
div
  b-button(@click='loginShow') Test
  b-dropdown(id='login-dropdown', ref='dropdown', text='Login')
    b-dropdown-item(to='/login') Login
    b-dropdown-item(to='/signup') Sign up
</template>

<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator';
import { BDropdown } from 'bootstrap-vue';

@Component
export default class Login extends Vue {

  private loginShow(e: any): void {
    const dropdown = this.$refs.dropdown as BDropdown;
    dropdown.visible = true;
  }
}
</script>

知道发生了什么吗?

这是解决方法,您可以通过它以编程方式打开下拉菜单。

为此,您必须根据需要将其 属性 设置为 true/false 可见。

this.$refs.ddown.visible = true // to show;
this.$refs.ddown.visible = false // to hide;

这里是 codepen link,展示了使用 ref.

以编程方式打开 bootstrap vue 下拉菜单的演示

奇怪的是,使用 TypeScript 直接设置可见 属性 不起作用,尽管根据 @Riddhi 的代码笔使用 ES6 可以正常工作。

我的解决方案是将 bootstrap-vue 更新为 2.0.0-rc.21 并使用 show() 方法:

<template lang='pug'>
div
  b-button(@click='loginShow') Test
  b-dropdown(id='login-dropdown', ref='dropdown', text='Login')
    b-dropdown-item(to='/login') Login
    b-dropdown-item(to='/signup') Sign up
</template>

<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator';
import { BDropdown } from 'bootstrap-vue';

@Component
export default class Login extends Vue {

  private loginShow(e: any): void {
    const dropdown = this.$refs.dropdown as BDropdown;
    dropdown.show();
  }
}
</script>