使用 Bootstrap-Vue 时,如何防止 b-dropdown 在单击嵌套的 b-input 组件时关闭?

While using Bootstrap-Vue, how do you prevent a b-dropdown from closing when clicking on a nested b-input component?

我很确定我只是不明白如何实现 Vue 的 Event Modifiers。根据该文档,我所要做的就是添加:

<!-- the click event's propagation will be stopped -->
<a v-on:click.stop="doThis"></a>

以下是我将示例解释为哈巴狗代码的方式:

b-dropdown(text="Actions")
  b-dropdown-item
    b-form(inline)
      .row
        .col
          b-input(@click.stop='' placeholder="#123")
          b-button(:href='printCheck' variant="primary") Print Check

它看起来很简单,但是它没有按预期工作。如果您需要更多支持信息,请询问。并随意调整标题;我不确定我的问题是 vue、bootstrap-vue 还是 javascript 问题。

提前感谢您抽出时间,
凯文

由于您点击的是一个组件,因此您应该将 .native.stop 修饰符结合使用,如下所示:

 b-input(@click.native.stop='' placeholder="#123")

如果您使用简单的 HTML 元素,例如 input,您只能使用 .stop 修饰符:

 input(@click.stop='' placeholder="#123")

您现在可以使用新的 <b-dropdown-form> sub-component 将输入字段放入下拉列表中。

您应该避免将输入控件放置在 <b-dropdown-item>(呈现 <a> 作为其根元素)或 <b-dropdown-item-button>(呈现 <button> 作为其根元素)内元素)。 HTML5 不喜欢 <a><button> 元素中的交互元素。

<b-dropdown-form> 不会 auto-close 单击下拉菜单。