- 需求的场景描述(希望解决的问题)
大部分的场景中,我们的range都是类似于如下结构:
[
{
value:'id_card',
name:'身份证'
},
...
];
name是我们要展示的文字。
value是最终要提交的数据。
1,该种场景下,picker的value属性,却只能保存range的下标,实际需求为objectArray的value值,这样的场景如何处理呢?
2,range的objectArray来自于后端接口,已知picker的默认值为'id_card',但并不知道其下标的情况下,如何赋值默认值?
- 希望提供的能力
希望可以自定义picker的value属性,类似于range-key这样的设置。
picker更像是有大量数据的radio,是否可以提供radio一样的处理方式。
看看能解决你的需求吗?https://github.com/IceApriler/miniprogram-picker
<view class="weui-cell__bd">
<picker range-key='name' name="idType" bindchange="idTypeChange" value="{{ form.idType}}" range="{{ IDTYPE }}">
<view wx:for="{{IDTYPE}}">
<view class="weui-select weui-select_in-select-after" wx:if="{{item.name == form.idType}}"> {{ item.desc }} </view>
</view>
</picker>
</view>
idTypeChange(e){
const IDTYPE = this.data.IDTYPE;
this.setData({
'form.idType': IDTYPE[e.detail.value].name
});
// this.pickerChange('idType', );
},
用了列表加条件渲染,给大家提供点思路吧。
rangeList[e.detail.value].value不是可以取到吗
是可以取到,但需要我在表单提交之前对数据进行处理,此外,初始赋值也是一个问题。