index.wxml
<view class="container"> <view class="trigger" bindtap="showModal">点击显示分类列表</view> <!-- 弹出层 --> <view class="modal" wx:if="{{showModal}}"> <view class="modal-content"> <view class="category-list" bindtap="selectCategory1" data-type="product" data-name="{{item.name}}" data-index="{{index}}" wx:for="{{productCategories}}" wx:key="index"> <view class="category-item {{selectedIndex1 === index && 'selected'}}" data-index="{{index}}"> {{item.name}} (索引号1: {{index}}) </view> </view> <view class="category-list" bindtap="selectCategory2" data-type="region" data-name="{{item.name}}" data-index="{{index}}" wx:for="{{regionCategories}}" wx:key="index"> <view class="category-item {{selectedIndex2 === index && 'selected'}}" data-index="{{index}}"> {{item.name}} (索引号2: {{index}}) </view> </view> <view class="query-button" bindtap="query">查询</view> </view> </view> </view>
index.wxss
.container { display: flex; justify-content: center; align-items: center; height: 100vh; } .trigger { padding: 20px; background-color: #007aff; color: white; text-align: center; border-radius: 5px; } .modal { position: fixed; left: 0; right: 0; bottom: 0; top: 0; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: flex-end; padding: 20px; } .modal-content { background-color: white; width: 100%; max-height: 80%; overflow-y: auto; border-radius: 10px; padding: 20px; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); } .category-list { margin-bottom: 20px; } .category-item { padding: 10px; border-bottom: 1px solid #ddd; } .category-item.selected { background-color: #f0f0f0; } .query-button { padding: 10px 20px; background-color: #007aff; color: white; text-align: center; border-radius: 5px; margin-top: 20px; }
index.js
Page({ data: { showModal: false, productCategories: [ { name: '电子产品' }, { name: '服装鞋帽' }, { name: '家居用品' }, ], regionCategories: [ { name: '北京' }, { name: '上海' }, { name: '广东' }, ], selectedIndex1: -1, selectedType1: '', selectedName1: '', selectedIndex2: -1, selectedType2: '', selectedName2: '' }, showModal() { this.setData({ showModal: true }); }, selectCategory1(e) { const { type, index } = e.currentTarget.dataset; this.setData({ selectedIndex1: index, selectedType1: type, selectedName1: e.currentTarget.dataset.name }); console.log(e) }, selectCategory2(e) { const { type, index } = e.currentTarget.dataset; this.setData({ selectedIndex2: index, selectedType2: type, selectedName2: e.currentTarget.dataset.name }); console.log(e) }, query() { const { selectedType1,selectedName1,selectedType2,selectedName2 } = this.data; console.log(selectedType1) console.log(selectedName1) console.log(selectedType2) console.log(selectedName2) wx.showToast({ title: `查询商品:${selectedType1}: ${selectedName1}/查询地区:${selectedType2}: ${selectedName2}`, icon: 'success', duration: 2000 }); // 在这里可以添加实际的查询逻辑,比如请求API接口 // wx.request({ // url: '你的API接口地址', // data: { // type: selectedType, // name: selectedName // }, // success: (res) => { // // 处理查询结果 // } // }); this.setData({ showModal: false }); } });
页面布局:
index.wxml
文件中定义了触发弹出层的按钮和弹出层的布局。弹出层中包含商品名称分类列表和地区分类列表,以及查询按钮。
使用 wx:if
控制弹出层的显示与隐藏。
样式定义:
index.wxss
文件中定义了页面的样式,包括触发按钮、弹出层、分类列表项和查询按钮的样式。
逻辑处理:
index.js
文件中定义了页面的数据绑定和事件处理逻辑。
showModal
方法用于显示弹出层。
selectCategory
方法用于处理分类列表项的点击事件,更新选中的分类项。
query
方法用于处理查询按钮的点击事件,显示查询结果(这里使用 wx.showToast
模拟显示查询结果,实际开发中应替换为请求API接口的逻辑)。
将上述代码复制到你的微信小程序项目中,并根据需要进行调整。
确保你的微信小程序项目已经正确配置,可以正常运行。
在实际开发中,根据API接口的要求,修改 query
方法中的请求逻辑。