小程序点击查询弹出商品和地区筛选条件 | 熊阿哥博客

小程序点击查询弹出商品和地区筛选条件

微信   2025-02-16 10:11   63   0  

7926_o9g2_1351.png

index.wxml

<view class="container">
  <!-- 点击区域 -->
  <view class="click-area" bindtap="togglePopup">
    <text>
      {{selectedProduct.name}} - {{selectedRegion.name}}
    </text>
  </view>

  <!-- 弹出层 -->
  <view class="popup" hidden="{{!showPopup}}">
    <view class="popup-content">
      <!-- 商品分类列表 -->
      <view class="category-list">
        <view 
          class="category-item {{selectedProduct.index === index ? 'active' : ''}}" 
          wx:for="{{productCategories}}" 
          wx:key="index" 
          data-index="{{index}}" 
          bindtap="selectProduct"
        >
          {{item.name}}
        </view>
      </view>

      <!-- 地区分类列表 -->
      <view class="category-list">
        <view 
          class="category-item {{selectedRegion.index === index ? 'active' : ''}}" 
          wx:for="{{regions}}" 
          wx:key="index" 
          data-index="{{index}}" 
          bindtap="selectRegion"
        >
          {{item.name}}
        </view>
      </view>
    </view>
  </view>
</view>


index.wxss

.container {
  position: relative;
  width: 100%;
  height: 100vh;
}

.click-area {
  padding: 20px;
  background-color: #f0f0f0;
  text-align: center;
  cursor: pointer;
}

.popup {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background-color: white;
  border-top: 1px solid #ccc;
  z-index: 1000;
  animation: slide-up 0.3s ease-out;
}

@keyframes slide-up {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}

.popup-content {
  padding: 20px;
}

.category-list {
  margin-bottom: 20px;
}

.category-item {
  padding: 10px;
  border-bottom: 1px solid #eee;
  cursor: pointer;
}

.category-item:last-child {
  border-bottom: none;
}

.category-item.active {
  background-color: #eef;
  font-weight: bold;
}


index.js

Page({
  data: {
    // 控制弹出层的显示与隐藏
    showPopup: false,

    // 商品名称分类列表
    productCategories: [
      { name: '电子产品', index: 0 },
      { name: '家居用品', index: 1 },
      { name: '服装配饰', index: 2 },
      // 其他分类...
    ],

    // 地区分类列表
    regions: [
      { name: '北京', index: 0 },
      { name: '上海', index: 1 },
      { name: '广东', index: 2 },
      // 其他地区...
    ],

    // 当前选中的商品分类
    selectedProduct: { name: '请选择商品分类', index: -1 },

    // 当前选中的地区分类
    selectedRegion: { name: '请选择地区分类', index: -1 },
  },

  // 切换弹出层显示
  togglePopup() {
    this.setData({
      showPopup: !this.data.showPopup
    });
  },

  // 选择商品分类
  selectProduct(e) {
    const selectedIndex = e.currentTarget.dataset.index;
    const selectedName = this.data.productCategories[selectedIndex].name;
    this.setData({
      selectedProduct: { name: selectedName, index: selectedIndex },
      showPopup: false
    });
    // 可以在这里触发查询功能
    this.performQuery();
  },

  // 选择地区分类
  selectRegion(e) {
    const selectedIndex = e.currentTarget.dataset.index;
    const selectedName = this.data.regions[selectedIndex].name;
    this.setData({
      selectedRegion: { name: selectedName, index: selectedIndex },
      showPopup: false
    });
    // 可以在这里触发查询功能
    this.performQuery();
  },

  // 查询功能
  performQuery() {
    const { selectedProduct, selectedRegion } = this.data;
    console.log('查询参数:', {
      product: selectedProduct.name,
      region: selectedRegion.name,
      productIndex: selectedProduct.index,
      regionIndex: selectedRegion.index
    });

    // 在这里调用API或执行其他查询逻辑
    // 例如:
    /*
    wx.request({
      url: 'https://your-api-endpoint.com/query',
      method: 'POST',
      data: {
        product: selectedProduct.name,
        region: selectedRegion.name
      },
      success: (res) => {
        // 处理查询结果
      }
    });
    */
  }
});


功能说明

  • 点击触发弹出层:用户点击“点击区域”时,会调用 togglePopup 方法切换弹出层的显示状态。

  • 选择分类:在弹出层中,用户点击某个商品分类或地区分类时,会调用相应的 selectProduct 或 selectRegion 方法,更新选中的分类信息,并关闭弹出层。

  • 高亮选中项:通过动态绑定 class,当某一项被选中时,添加 active 类,使其背景颜色变化,达到点亮效果。

  • 执行查询:每次选择分类后,都会调用 performQuery 方法,你可以在这里集成实际的查询逻辑,如调用API获取数据。

扩展功能

根据需求,你可以进一步扩展以下功能:

  • 搜索功能:在弹出层中加入搜索框,方便用户快速查找分类。

  • 多选支持:允许用户选择多个商品分类或地区分类。

  • 动画优化:调整弹出层的动画效果,使其更加流畅或符合设计需求。

  • 键盘关闭:在移动设备上,点击弹出层外部区域关闭弹出层。

注意事项

  • 数据管理:确保分类数据来源可靠,可以在页面加载时通过API获取最新的分类列表。

  • 性能优化:对于大量分类数据,考虑使用虚拟列表等技术优化渲染性能。

  • 用户体验:提供清晰的选中反馈,确保用户明确知道当前选中了哪些分类。


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。