当前位置:首页 > uni-app

uniapp搜索筛选

2026-03-05 00:31:13uni-app

实现搜索筛选功能

在UniApp中实现搜索筛选功能通常涉及前端界面设计和后端数据处理。以下是几种常见的方法:

使用<input>v-model绑定搜索关键词

<template>
  <view>
    <input v-model="searchText" placeholder="输入关键词搜索" @input="filterData" />
    <view v-for="(item, index) in filteredList" :key="index">
      {{ item.name }}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      searchText: '',
      originalList: [],
      filteredList: []
    }
  },
  methods: {
    filterData() {
      this.filteredList = this.originalList.filter(item => 
        item.name.includes(this.searchText)
      )
    }
  }
}
</script>

结合下拉筛选组件

<template>
  <view>
    <picker @change="bindPickerChange" :value="index" :range="filterOptions">
      <view>当前筛选:{{filterOptions[index]}}</view>
    </picker>
    <view v-for="(item, i) in filteredData" :key="i">
      {{item.name}}
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      filterOptions: ['全部', '类型1', '类型2'],
      index: 0,
      originalData: [],
      filteredData: []
    }
  },
  methods: {
    bindPickerChange(e) {
      this.index = e.detail.value
      this.applyFilter()
    },
    applyFilter() {
      if(this.index === 0) {
        this.filteredData = [...this.originalData]
      } else {
        this.filteredData = this.originalData.filter(item => 
          item.type === this.filterOptions[this.index]
        )
      }
    }
  }
}
</script>

优化搜索性能

对于大数据量列表,建议采用防抖技术减少频繁触发搜索:

let timer = null
methods: {
  filterData() {
    clearTimeout(timer)
    timer = setTimeout(() => {
      // 实际过滤逻辑
    }, 300)
  }
}

多条件组合筛选

实现多个筛选条件的组合查询:

filterData() {
  this.filteredList = this.originalList.filter(item => {
    const nameMatch = item.name.includes(this.searchText)
    const typeMatch = this.selectedType === '全部' || item.type === this.selectedType
    const priceMatch = item.price >= this.minPrice && item.price <= this.maxPrice
    return nameMatch && typeMatch && priceMatch
  })
}

与后端API结合

当数据量较大时,建议将筛选逻辑放在后端:

uniapp搜索筛选

async fetchFilteredData() {
  const res = await uni.request({
    url: '/api/filter',
    data: {
      keyword: this.searchText,
      category: this.selectedCategory,
      page: this.currentPage
    }
  })
  this.filteredList = res.data.list
}

注意事项

  • 移动端输入框建议添加confirm-type="search"属性优化键盘体验
  • 筛选结果为空时应显示友好提示
  • 复杂筛选条件可考虑使用弹出层或侧边栏布局
  • 分页加载时需要重置页码参数

标签: uniapp
分享给朋友:

相关文章

uniapp怎么启动

uniapp怎么启动

启动UniApp项目的步骤 确保已安装Node.js(建议版本12+)和HBuilderX(官方IDE)。若未安装,需先下载并配置环境。 安装开发工具 从HBuilderX官网下载对应操作系统的版本…

uniapp实名认证

uniapp实名认证

uniapp实名认证实现方法 使用uniCloud实名认证插件 uniapp官方提供了uniCloud的实名认证插件,可快速集成到项目中。插件支持身份证识别、活体检测等功能,需在uniCloud控制台…

任务 uniapp

任务 uniapp

uniapp 简介 Uniapp 是一款基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,开发者可以通过一套代码适配多个…

房产uniapp

房产uniapp

房产类UniApp开发指南 UniApp作为跨平台开发框架,适用于快速构建房产类应用(如二手房交易、租房平台、新房展示等)。以下是关键开发要点和实现方法: 技术选型与框架配置 跨平台适配:使…

uniapp 气泡

uniapp 气泡

uniapp 气泡实现方法 在 uniapp 中实现气泡效果可以通过多种方式,以下是常见的几种方法: 使用 CSS 样式实现气泡 通过 CSS 的 border 和 ::after 伪元素可以创建气…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…