picker弹出选项的诡异问题
发布于 5 年前 作者 ming96 14848 次浏览 来自 问答

各位大神,请教一个picker的问题:

默认或选中某一项后,再次点开picker选项,默认选中的是却变成了选中的下一项,示例:

  1. 选中了“定期”
  1. 再次点开,默认变成了 “交至约定年龄”,而不是我之前选中的“定期”。

好像每次点开之后,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>

1 回复

又来自问自答一发,把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>


问题解决,虽然还没细究原理是什么……

回到顶部