uniapp实现搜索提示代码
时间: 2023-08-03 12:08:56 浏览: 131
要实现搜索提示,可以使用 `uni-search-bar` 组件和 `uni-popup` 组件,代码如下:
```vue
<template>
<div>
<uni-search-bar
@change="onChange"
@focus="onFocus"
@blur="onBlur"
></uni-search-bar>
<uni-popup
ref="popup"
:position="position"
:show="showPopup"
>
<ul>
<li v-for="(item, index) in searchList" :key="index" @click="selectItem(item)">
{{ item }}
</li>
</ul>
</uni-popup>
</div>
</template>
<script>
export default {
data() {
return {
showPopup: false,
searchList: [],
position: {
top: 0,
left: 0,
width: 0,
height: 0
}
}
},
methods: {
onChange(e) {
// 模拟异步请求数据
setTimeout(() => {
this.searchList = ['apple', 'banana', 'orange'].filter(item => item.includes(e.detail.value))
if (this.searchList.length > 0) {
const rect = uni.getRect(this.$refs.searchBar)
this.showPopup = true
this.position = {
top: rect.bottom,
left: rect.left,
width: rect.width,
height: 200
}
} else {
this.showPopup = false
}
}, 500)
},
onFocus(e) {
this.showPopup = true
},
onBlur(e) {
this.showPopup = false
},
selectItem(item) {
console.log('selected item:', item)
// TODO: 处理选中项
this.showPopup = false
}
}
}
</script>
```
在 `onChange` 事件中,我们模拟了异步请求数据的过程,并根据输入的关键字筛选出符合条件的数据,然后将数据填充到弹出框中。如果数据列表不为空,则显示弹出框,并根据搜索栏的位置计算出弹出框的位置和大小。在选中项后,我们需要关闭弹出框,并处理选中项的逻辑。
阅读全文