各位大神,请教一个picker的问题:
默认或选中某一项后,再次点开picker选项,默认选中的是却变成了选中的下一项,示例:
- 选中了“定期”
- 再次点开,默认变成了 “交至约定年龄”,而不是我之前选中的“定期”。
好像每次点开之后,index被自动加了1,请问大家有遇到过这种诡异问题吗。。。
代码如下:
js:
data: {
payPeriodTypeArr: [{ value: ‘01’, text: ‘定期’ }, { value: ‘02’, text: ‘交至约定年龄’ }],
payPeriodTypeIndex: 0,
}
bindPayPeriodTypeChange: function (e) { //交费期类型
console.log(‘payPeriodType发生选择改变,携带值为’, e.detail.value)
var that = this;
var i = e.detail.value
that.setData({
payPeriodTypeIndex: i,
})
},
wxml:
<view class=“form-item”>交费期类型
<image src="{{imgServer}}arrow.png" class=“arrow”></image>
<picker class=“form-item-detail” bindchange=“bindPayPeriodTypeChange” value="{{payPeriodTypeArr[payPeriodTypeIndex].value}}" range="{{payPeriodTypeArr}}" range-key=“text”>
<view class=“picker”>
{{payPeriodTypeArr[payPeriodTypeIndex].text}}
</view>
</picker>
</view>
又来自问自答一发,把picker中的value删掉或者改为对应的index,就不会出现这个诡异的问题了。。。
原代码:
<view class="form-item">交费期类型
<image src="{{imgServer}}arrow.png" class="arrow"></image>
<picker class="form-item-detail" bindchange="bindPayPeriodTypeChange" value="{{payPeriodTypeArr[payPeriodTypeIndex].value}}" range="{{payPeriodTypeArr}}" range-key="text">
<view class="picker">
{{payPeriodTypeArr[payPeriodTypeIndex].text}}
</view>
</picker>
</view>
解决方法:删除 value="{{payPeriodTypeArr[payPeriodTypeIndex].value}}" 或改成 value = “{{payPeriodTypeIndex}}”
改完:
<view class="form-item">交费期类型
<image src="{{imgServer}}arrow.png" class="arrow"></image>
<picker class="form-item-detail" bindchange="bindPayPeriodTypeChange" range="{{payPeriodTypeArr}}" range-key="text">
<view class="picker">
{{payPeriodTypeArr[payPeriodTypeIndex].text}}
</view>
</picker>
</view>
问题解决,虽然还没细究原理是什么……