【问题标题】:How to open a Vue-Bootstrap Dropdown pragmatically如何务实地打开 Vue-Bootstrap 下拉菜单
【发布时间】:2018-10-23 08:55:33
【问题描述】:

当我专注于输入(b-form-input 字段)时,我正在尝试实用地打开 Vue-Bootstrap 下拉列表(b-dropdown)。我在 b-form-input 上调用了 @focus 方法来打开下拉菜单。

这是我的引导代码:

<b-form-input v-model="search" @focus.native="openDropdown"></b-form-input>

<b-dropdown id="ddown1" text="Dropdown Button" class="m-md-2" ref="dropdownRef">
 <b-dropdown-item>First Action</b-dropdown-item>
 <b-dropdown-item>Second Action</b-dropdown-item>
</b-dropdown>

这是我的 Vuejs 代码:

methods:{

   openDropdown(){
    const elem = this.$refs.dropdownRef;
    elem.click();
   }

}

我尝试了很多方法,例如设置 elem.visible =true。但它很快打开然后关闭。

我关注了How to open Bootstrap dropdown programmatically。但它不适用于 vue-bootstrap。

【问题讨论】:

    标签: vuejs2 bootstrap-4 dropdown


    【解决方案1】:

    您可以使用jQuery 切换下拉菜单

    methods:{
       openDropdown() {
        $('#ddown1').dropdown('toggle');
       }
    }
    

    new Vue({
      el:'#app',
      data () {
        return {
          search: ''  
        }
      },
      methods:{
    
       openDropdown() {
        console.log('open');
        $('#ddown1').dropdown('toggle');
       }
    
    }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
    <link href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.css" rel="stylesheet"/>
    <link href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
    <script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.js"></script>
    
    <div id="app">
        <b-form-input v-model="search" @focus.native="openDropdown"></b-form-input>
    
    <b-dropdown id="ddown1" text="Dropdown Button" class="m-md-2 active" ref="dropdownRef">
     <b-dropdown-item>First Action</b-dropdown-item>
     <b-dropdown-item>Second Action</b-dropdown-item>
    </b-dropdown>
    </div>
    
    </div>

    https://codepen.io/ittus/pen/OZEOGW查看我的演示

    【讨论】:

    • 谢谢,您的解决方案完美运行。但是有没有办法在没有 JQuery 的情况下解决这个问题。据我所知,VueJS refs 用于获取 DOM 元素的引用。有没有办法使用 VueJS refs 来解决这个问题?当然,我发现 b-dropdown 包含许多属性和方法,例如可见、单击等。我们不能使用其中一个属性来解决问题吗?但其中任何一个都不适合我
    • 永远不要混合 JS 框架来操作 DOM
    猜你喜欢
    • 2018-02-22
    • 2021-10-09
    • 2016-06-26
    • 2019-10-14
    • 2020-12-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多