wxhm代码:
当前选择:{{ceshi_array[ceshi_array_index]}}
<picker bindchange="bindPickerChange2" value="{{ceshi_array2_index}}" range="{{ceshi_array2}}">
当前选择:{{ceshi_array2[ceshi_array2_index]}}
注:其实就是在官网文档复制的普通picker组件代码,只是更改过value和range的默认值
js代码:
Page({
data: {
ceshi_array: ['美国', '中国', '巴西', '日本'],
ceshi_array_index: 0,
ceshi_array2: ['美国2', '中国2', '巴西2', '日本2'],
ceshi_array2_index: 0
},
bindPickerChange: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
index: e.detail.value
})
},
bindPickerChange2: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
this.setData({
index: e.detail.value
})
},
})
也就是说当前页有多个组件普通picker时,每一个都选第二个,那么console.log出来的value值是 1,后面的无论多少个picker的value的值都是 0。
注:在操作滚动选项时,必须一次就滚动选项二,中间不可滚动失误、或者鼠标点一下,否则不会呈现这个bug。
不过在手机上这个bug并没有呈现,仅限在微信开发工具上。
下面附带一张操作gif图
谢谢反馈,已经定位到问题了,对你造成的困扰表示抱歉
所有数据都需要setData 包括那个保存了索引的数组,
<picker name="picker_hx" value="{{pic_array[hx_index].id}}" data-selecthx="{{pic_array[hx_index].name}}" range="{{pic_array}}" range-key="{{'name'}}" bindchange="bindPickerChange_hx" >
<view class="picker" class="picker">
{{pic_array[hx_index].name}}
</view>
</picker>
JS中
data:
pic_array: [
{ id: 13, name: '本科' },
{ id: 14, name: '大专' },
{ id: 15, name: '研究生' },
{ id: 16, name: '博士' },
{ id: 17, name: '高中' }
],
hx_index: 0,
改变事件:
bindPickerChange_hx: function (e) {
console.log('自定义值:', e.currentTarget.dataset.selecthx);
console.log('picker发送选择改变,携带值为', e.detail.value);
this.setData({
hx_index: e.detail.value,
})
},
我使用picker组件时,想要在change事件中同时获取到下拉框中的value值和自定义值,
但是我输出的时候value值输出的是索引0,1,2 自定义值(就是下拉框选中的那个文本)每次获取的是上一次选中的,比如我选大专,e.currentTarget.dataset.selecthx 输出的确是本科,选研究生显示的是大专,可是查看Wxml源时data-selecthx显示的确是对的,value值也是数组中的id,而不是索引下标,这是什么原因呢,我要怎么获取到每次选中的id和name对应的值呢??
谢谢