uni-app 多分类搜索功能需求

uni-app 多分类搜索功能需求

能多分类搜索就好了

1 回复

更多关于uni-app 多分类搜索功能需求的实战教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提出的uni-app多分类搜索功能需求,以下是一个基于Vue和uni-app框架实现的示例代码。此示例将展示如何构建一个包含多分类搜索功能的页面。

首先,确保您的uni-app项目已经创建并配置好。接下来,在pages目录下创建一个新的页面,例如search.vue

search.vue

<template>
  <view class="container">
    <picker mode="multiSelector" :range="multiArray" @change="bindMultiPickerChange">
      <view class="picker">
        {{multiArray[0][multiIndex[0]]}} - {{multiArray[1][multiIndex[1]]}}
      </view>
    </picker>
    <input type="text" v-model="searchQuery" placeholder="请输入搜索关键词" />
    <button @click="search">搜索</button>
    <view v-if="results.length">
      <view v-for="(item, index) in results" :key="index" class="result-item">
        {{item.name}} - {{item.category}}
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      multiArray: [['分类1', '分类2'], ['子分类1', '子分类2']],
      multiIndex: [0, 0],
      searchQuery: '',
      results: []
    };
  },
  methods: {
    bindMultiPickerChange(e) {
      this.multiIndex = e.detail.value;
    },
    search() {
      // 假设我们有一个模拟的API调用函数fetchResults
      this.fetchResults(this.multiIndex, this.searchQuery).then(res => {
        this.results = res;
      });
    },
    fetchResults(categoryIndices, query) {
      // 模拟API调用,返回Promise
      return new Promise((resolve) => {
        setTimeout(() => {
          const mockData = [
            // 模拟数据,根据分类和关键词过滤
            {name: '商品A', category: '分类1-子分类1'},
            {name: '商品B', category: '分类2-子分类2'}
          ].filter(item => {
            const categoryMatch = item.category.includes(this.multiArray[0][categoryIndices[0]]) &&
                                  item.category.includes(this.multiArray[1][categoryIndices[1]]);
            const queryMatch = item.name.toLowerCase().includes(query.toLowerCase());
            return categoryMatch && queryMatch;
          });
          resolve(mockData);
        }, 1000);
      });
    }
  }
};
</script>

<style>
.container {
  padding: 20px;
}
.picker {
  margin: 20px 0;
}
.result-item {
  padding: 10px;
  border-bottom: 1px solid #ddd;
}
</style>

说明

  1. 多分类选择器:使用picker组件实现多分类选择,multiArray存储分类数据,multiIndex存储当前选中的分类索引。
  2. 搜索框:使用input组件实现关键词输入,searchQuery绑定输入框的值。
  3. 搜索按钮:点击按钮触发search方法,该方法调用fetchResults模拟API请求,根据分类和关键词过滤数据。
  4. 结果展示:搜索结果展示在results数组中,通过v-for指令循环渲染。

请根据您的实际需求调整数据和逻辑。

回到顶部