新手刚学编程不久,然后遇到了picker组件的坑,都知道picker通过form提交的时候是提交它的下标,然而,我们提交到服务器的要下标并没什么卵用,上网查了一轮都没找到具体说法,有的说是数组写成[{id:0,name:xxx},{id:1,name:xxx}]之类形式,然后根据下标对应id去拿到name提交服务器,看得我糊里糊涂,后来试了一轮,终于找到最简单直接的方法。
首先,假设data中有这么一个数组
data: {
MusicN: 0,
Music: ['钢琴','小提琴','吉他','声乐','其他','未决定' ]
}
wxml是这样
<form bindsubmit="formSubmit">
<picker name="instrument" bindchange="bindPickerMusic" value="{{MusicN}}" range="{{Music}}">{{Music[MusicN]}}</picker>
<button type="primary" formType="submit"> 提交 </button>
</form >
两个组件绑定的函数
// Picker改变选项的时候
bindPickerMusic: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
MusicN: e.detail.value
})
},
//form提交表单
formSubmit: function (e) {
console.log('picker的携带值为' + e.detail.value.instrument)
//e.detail.value.instrument是picker提交的下标,直接写在数组后面的中括号里,得到数组中对应的值
var ins = this.data.Music[e.detail.value.instrument]
console.log('输出的是' + ins)
输出结果:
之后就可以开心愉快地提交给服务器的小伙伴们了