
index.wxml
<view class="container">
<!-- 点击文字触发弹出层 -->
<view bindtap="showPopup">点击选择分类</view>
<!-- 弹出层 -->
<view class="popup" wx:if="{{showPopupView}}">
<view class="popup-mask" bindtap="hidePopup"></view>
<view class="popup-content">
<!-- 商品名称分类列表 -->
<view class="category-list">
<view class="category-title">商品名称分类</view>
<view class="category-item" wx:for="{{productCategories}}" wx:key="*this" bindtap="selectItem" data-type="product" data-index="{{index}}">
{{item}}
</view>
</view>
<!-- 地区分类列表 -->
<view class="category-list">
<view class="category-title">地区分类</view>
<view class="category-item" wx:for="{{areaCategories}}" wx:key="*this" bindtap="selectItem" data-type="area" data-index="{{index}}">
{{item}}
</view>
</view>
<!-- 查询按钮 -->
<view class="query-btn" bindtap="queryData">查询</view>
</view>
</view>
<!-- 显示选中信息 -->
<view class="selected-info">
<view>选中商品: {{selectedProductText}} (索引: {{selectedProductIndex}})</view>
<view>选中地区: {{selectedAreaText}} (索引: {{selectedAreaIndex}})</view>
</view>
</view>
index.wxss
.container {
padding: 20px;
}
.popup {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999;
}
.popup-mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
}
.popup-content {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
background-color: #fff;
padding: 20px;
box-sizing: border-box;
}
.category-list {
margin-bottom: 20px;
}
.category-title {
font-weight: bold;
margin-bottom: 10px;
}
.category-item {
padding: 10px 0;
border-bottom: 1px solid #eee;
}
.query-btn {
text-align: center;
background-color: #007aff;
color: #fff;
padding: 10px;
border-radius: 5px;
}
.selected-info {
margin-top: 20px;
}
index.js
Page({
data: {
showPopupView: false,
productCategories: ['商品1', '商品2', '商品3'],
areaCategories: ['地区1', '地区2', '地区3'],
selectedProductText: '',
selectedProductIndex: -1,
selectedAreaText: '',
selectedAreaIndex: -1
},
// 显示弹出层
showPopup() {
this.setData({
showPopupView: true
});
},
// 隐藏弹出层
hidePopup() {
this.setData({
showPopupView: false
});
},
// 选择列表项
selectItem(e) {
const { type, index } = e.currentTarget.dataset;
if (type === 'product') {
this.setData({
selectedProductText: this.data.productCategories[index],
selectedProductIndex: index
});
} else if (type === 'area') {
this.setData({
selectedAreaText: this.data.areaCategories[index],
selectedAreaIndex: index
});
}
},
// 查询功能
queryData() {
const { selectedProductText, selectedProductIndex, selectedAreaText, selectedAreaIndex } = this.data;
if (selectedProductIndex === -1 || selectedAreaIndex === -1) {
wx.showToast({
title: '请选择商品和地区',
icon: 'none'
});
return;
}
console.log('查询商品:', selectedProductText, '索引:', selectedProductIndex);
console.log('查询地区:', selectedAreaText, '索引:', selectedAreaIndex);
// 这里可以添加实际的查询逻辑,例如发送请求到服务器
wx.showToast({
title: '查询成功',
icon: 'success'
});
this.hidePopup();
}
});
index.wxml:包含一个点击文字触发弹出层的按钮,弹出层中显示商品名称分类列表和地区分类列表,每个列表项绑定了点击事件。还有一个查询按钮,绑定了查询事件。
index.wxss:定义了弹出层和列表的样式,实现了从下向上弹出的效果。
index.js:
showPopup 方法用于显示弹出层。
hidePopup 方法用于隐藏弹出层。
selectItem 方法用于处理列表项的点击事件,根据点击的类型(商品或地区)更新选中信息。
queryData 方法用于处理查询事件,检查是否选择了商品和地区,若选择则打印选中信息并显示查询成功提示,同时隐藏弹出层。
通过以上代码,你可以实现点击文字弹出分类列表,选择列表项并显示选中信息,以及点击查询的功