【问题标题】:Vuetify Combobox - open dropdown on icon clickVuetify Combobox - 单击图标打开下拉菜单
【发布时间】:2023-03-20 17:40:02
【问题描述】:

我正在尝试在下拉列表中创建一个包含以前搜索历史记录的搜索输入字段,例如 Intellij 编辑器中的搜索字段。

我是 Vuetify 的新手,从目前的情况来看,Combobox 似乎是最适合使用的组件。

我希望只有在您点击下拉图标时才会打开下拉菜单。目前,当您单击文本输入字段时,下拉菜单会打开。从文档看起来像 prop :menu-props="{openOnClick: false}" 可能是我需要的,但它似乎不起作用。

谁能给我指点正确的方向?

https://codepen.io/damianhelme/pen/zMXJvb

<v-combobox
   v-model="search"
   :items="searchHistory"
   label="Search"
   :menu-props="{openOnClick: false}"
></v-combobox>

new Vue({
  el: '#app',
  data () {
    return {
      search: '',
      searchHistory: [
        'Apple',
        'Banana',
        'Pear'
      ]
    }
  }
})

谢谢。

【问题讨论】:

  • openOnClick: false 预期的行为可能是当您单击输入组件时,该菜单不会打开。这似乎不起作用,所以也许这是一个错误(根据 v-menu 文档设置自定义激活器显然不起作用)。您写了I would like the dropdown to only open if you click the dropdown icon. - 所以即使该道具按预期工作,我认为菜单会在您开始输入时立即打开。这是故意的吗?您可以尝试在 v-autocomplete` 上设置 @click.stop,但这也会阻止点击时关闭。我建议让开发人员看看这是否是错误
  • 感谢@Traxo,我希望菜单在输入时保持关闭状态。

标签: vuetify.js


【解决方案1】:

编辑:
使用自定义 append 插槽更新了笔以处理图标状态:
https://codepen.io/anon/pen/KrjzRL


如果您只想在单击图标时打开(和关闭)组合框,请尝试以下技巧:
<v-combobox
    :menu-props="{value: autoselectMenu}"
    @click:append="toggle"
></v-combobox>

将自定义 value 传递给菜单 - 这表明是否应打开/关闭菜单。
然后使用:append-icon-cb prop 仅在单击图标时更改该值。

data () {
  return {
    autoselectMenu: false,
// ...
methods: {
  toggle() {
    this.autoselectMenu = !this.autoselectMenu
  }
// ...

因此,对于任何其他情况,当您想要打开或关闭菜单时,只需更改该自定义值,即 autoselectMenu

codepen

【讨论】:

  • 你可以做:append-icon-cb="this.autoselectMenu = !this.autoselectMenu inline。但是好把戏!
  • @Toodoo 是的,而且append-icon-cb 已被弃用,我们应该改为@click:append,哈哈。但是如果我们需要在其他一些情况下重用它,可能会使用自定义函数。需要测试这种方法,看看它是否有问题?
  • 感谢@Traxo。我对'@click:append="toggle"'很好奇,我以前没见过这种说法。我猜这就是您将事件侦听器绑定到组件中的插槽的方式。你知道这是否记录在任何地方?我在 Vuejs 文档中找不到它。此外,在 Codepen 示例中,我看到当您开始输入时下拉图标会倒置,即使菜单尚未打开。有什么简单的方法可以阻止这种情况发生吗?
  • @DamianHelme @click:append 至少记录了文本字段(请参阅事件选项卡)vuetifyjs.com/en/components/text-fields#api,开发人员非常忙,因此实际上并未记录所有内容。有 vuetify 警告和发行说明。请参阅有关如何处理图标状态的更新。
  • 我一直试图在 v-combobox 和 v-autocomplete 上应用 :menu-props="{ closeOnClick: true, closeOnContentClick: true, openOnClick: false, maxHeight: 200 }" 都不起作用。我正在使用 1.5.14 的 vuetify 版本可以帮助任何人!!!!
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2014-04-01
  • 2016-08-19
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多