微信小程序 picker 多列选择器
微信官方文档的的案例数据是写死,而且代码阅读性特别差
下面是我参考官方案例写的一个多列选择器,数据是都动态获取的
这是一个二列的选择器,如果需要三列的可以稍加修改一下
一、wxml
<picker
mode="multiSelector"
bindchange="bindMultiPickerChange"
bindcolumnchange="bindMultiPickerColumnChange"
value="{{multiIndex}}"
range="{{multiArray}}"
>
<view class="picker">
请选择:{{multiArray[0][multiIndex[0]]}} {{multiArray[1][multiIndex[1]]}}
</view>
</picker>
二、js
选择器中的数据都是动态获取的,只要将数据转成跟data
中的数据格式一样就行了
Page({
data: {
multiIndex: [0, 0], // 默认值
multiArray: [
['一年级', '二年级'], // 年级
['1班a', '2班a', '3班a'] // 这里对应年级的第一个元素的班级,也就是一年级的班级
],
classArray: [
['1班a', '2班a', '3班a'], // 一年级的班级
['1班b', '2班b', '3班b'] // 二年级的班级
]
},
// 点击确认时触发
bindMultiPickerChange(event) {
this.setData({
multiIndex: event.detail.value
})
},
// 列改变时触发
bindMultiPickerColumnChange(event) {
const data = {
multiArray: this.data.multiArray,
multiIndex: this.data.multiIndex
}
// 获取滚动的是哪一列
data.multiIndex[event.detail.column] = event.detail.value
// 遍历 classArray
this.data.classArray.forEach((item, index) => {
// 滚动第一列
if(event.detail.column === 0) {
// 如果滚动到二年级 则将第二列的班级 替换成二年级对应的班级
if(data.multiIndex[0] === index) {
data.multiArray[1] = item
}
// 每次滚动 就把第二列默认设置为第一个
data.multiIndex[1] = 0
}
this.setData(data)
})
}
})
参考文档
picker 组件文章来源:https://www.toymoban.com/news/detail-511582.html
如果该文章能帮到你的话 麻烦点个赞 谢谢啦~文章来源地址https://www.toymoban.com/news/detail-511582.html
到了这里,关于微信小程序picker多列选择器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!