javascript - 如何使 v-autocomplete/v-select 始终显示下拉菜单?
问题描述
我正在使用从 v-select 扩展而来的v-autocomplete
a 。
我有一种情况,我想将此选择包装在 v-menu 中。
如果您尝试使用激活器将 a 包装v-select
在 a 中,您希望首先呈现一个按钮,当您单击该按钮时,它会显示自动完成。v-menu
v-btn
请参阅此代码笔以了解我的意思:https ://codepen.io/sntshk/pen/KKmjMPX?editors=1010
上述实现的问题是,当您单击按钮时,您最初看到的是一个压扁的下拉项目,在那里看起来非常糟糕。然后,当您通过单击专注于 v-select 时,您会看到完整的下拉列表。
我在这里想要实现的是,当我单击按钮时,默认情况下使 v-select 成为焦点。当我单击按钮时,这将完全呈现列表项。
所以我的问题是,我该怎么做才能使 v-select 默认成为焦点?
解决方案
你可以通过设置autofocus
prop来达到这个效果v-autocomplete
,然后在这个元素上监听 focus 事件并执行以下操作:
@focus="$event.target.click"
这样,当菜单打开时,选择字段获得焦点,焦点事件代码使下拉菜单打开。
检查下面的演示:
Vue.config.productionTip = false;
new Vue({
el: '#app',
vuetify: new Vuetify(),
data: {
flowers: ['foo', 'bar', 'baz', 'lorem', 'ipsum', 'something', 'else', 'to', 'make', 'itemlist', 'long']
}
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-main>
<v-container>
<v-menu offset-y :close-on-content-click="false">
<template v-slot:activator="{ on, attrs }">
<v-btn v-bind="attrs" v-on="on">foobar</v-btn>
</template>
<v-autocomplete autofocus :items="flowers" multiple label="Select an item" @focus="$event.target.click()"></v-autocomplete>
</v-menu>
</v-container>
</v-main>
</v-app>
</div>
推荐阅读
- windows - 如何在多个文件上调用动词
- python - plt.figure() 影响 kivy 窗口?
- python - 对 Spark 数据框中的行进行洗牌
- postgresql - 合并联合中的行,将空列替换为具有值的列
- schema.org - JSON-LD 中的 LocalBusiness 和 Organization 模式
- filter - 需要帮助过滤数据 - Google 表格(见说明)
- uml - 如图所示,我们可以在扩展点上使用包含吗
- javascript - Firebase `不是函数`firebase 5.11.1 及更高版本出错
- c++ - UE4中如何将FText转换为float
- linux - bash 脚本中的多线程