有源码
微信小程序的picker类型很多,时间获取比较好获取,直接e.detail.value就可以获取,但是像很多是类别的获取,这样就很难获取了,因为你的e.detail.value获取到的是数组的下标,这样你无法获取你想要的数据,这样就导致无法和后台交互,下面我用一个具体的实例来讲一picker获取数组的数据:做的就是车位预约申请:
第一个问题:
选中数据但是无法再前段显示选中的数据(一定得加objectArray)
data: {
array: ['标间:168', '大床房:198', '商务房:268', '总统套房:368', '三人间:208', 'vip套房:108'],
objectArray: [
{
id: 0,
name: '标间:168'
},
{
id: 1,
name: '大床房:198'
},
{
id: 2,
name: '商务房:268'
},
{
id: 3,
name: '总统套房:368'
}
,
{
id: 4,
name: '三人间:208'
},
{
id: 5,
name: 'vip套房:108'
}
],
index: 0,
然后通过setdata给前段返回获取的下标
booktype:function(e){
console.log(e.detail.value)
this.setData({
index: e.detail.value
})
console.log(this.data.array[e.detail.value])
},
这样就可以将选中的数据在前段显示了
第二个问题就是:
获取的是下标,我们想要数组的数据,这时候你e.detail.value没有什么用。你要注意到你的数组在data里边,所以你需要data.array[e.detail.value],本以为这样就成功了,但是这是js语言,data无法直接获取,需要用this获取上一层对象(不理解的话看一下js语言吧),这样就可以直接获取了
this.data.array[e.detail.value]
现在就可以拿到你的数据了。
最后我分享一下完整的代码:
wxml
<view class="ar_cont">
<button class="ar_book">车位申请</button>
<text>\n</text>
<text class="ar_cont_h1">车位号