在 UniApp 中实现下拉选择框(带输入搜索功能),可以通过以下步骤实现。这里以使用 uni-data-select 组件(官方推荐)为例,因为它内置了搜索功能,简单高效。
实现步骤:
-
安装或引入 uni-data-select 组件(如果项目未内置):
- 在 HBuilderX 中,确保项目使用了
uni_modules。如果未安装,可通过右键 uni_modules 文件夹选择「导入插件」搜索 uni-data-select 安装。
- 或直接使用 npm:
npm install @dcloudio/uni-ui,然后在页面中引入。
-
在页面中使用组件:
- 在模板中添加
uni-data-select,并配置 localdata 数据源及 v-model 绑定值。
-
启用搜索功能:
- 设置
filterable 属性为 true,即可启用输入搜索。
示例代码:
<template>
<view>
<uni-data-select
v-model="selectedValue"
:localdata="options"
:clear="true"
:filterable="true" <!-- 关键:启用搜索 -->
@change="onChange"
placeholder="请选择或搜索"
></uni-data-select>
</view>
</template>
<script>
export default {
data() {
return {
selectedValue: '', // 绑定选中的值
options: [
{ value: '1', text: '选项1' },
{ value: '2', text: '选项2' },
{ value: '3', text: '选项3' },
// 更多选项...
]
};
},
methods: {
onChange(e) {
console.log('选中值:', e);
}
}
};
</script>
关键属性说明:
v-model:绑定选中的值。
localdata:本地数据源,格式为数组,包含 value 和 text 字段。
filterable:设置为 true 启用输入框搜索过滤。
clear:是否显示清除按钮。
@change:选择变化时触发的事件。
注意事项:
- 如果数据源来自网络请求,可在
mounted 中异步加载并赋值给 options。
- 对于复杂场景(如远程搜索),可使用
uni-request 配合 @input 事件动态更新 localdata。
此方法简单高效,适用于大多数下拉搜索需求。如有更复杂场景,可结合自定义组件实现。