原生微信小程序中使用 Picker view 设置默认值不生效

今天在微信小程序中使用 Picker view 这个组件,遇到一个设置默认值选中不生效的问题。

按照微信的官网文档,如果需要设置默认选中项可以这样设置

微信官方文档地址

我的代码中是在 attached 生成的选项数据,刚开始是在 data 里面直接设了默认选中值,duration: [1],但是不管怎么样都是不生效。后来就推测是因为选项数据在 attached 里面初始化完成的,所以设置的不生效。后来修改在 attached 里面完成选项数据初始化之后再去设置setDefaultDuration一下默认值就解决了;为什么能够更新呢,我推测是因为 duration 是响应式数据,设置之后会驱动页面更新,自然就会默认选中到对的设置项。\

所以在生成选项数据之后最好重新设置一下默认选中的下标。

  <picker-view class="picker-view-single" mask-class="picker-mask" indicator-class="picker-indicator" value="{{duration}}" bindpickstart="onPickStart" bindchange="onTimeChange">
          <picker-view-column class="picker-column hour-column">
            <view class="picker-item {{ duration[0] === index ? 'active' : '' }}" wx:for="{{pickerHours}}" wx:key="index">
              <view class="text">{{ item.label }}</view>
            </view>
          </picker-view-column>
        </picker-view>
  lifetimes:{
    attached(){

      let pickerHours = this.getHourList()
      let pickerMinutes = this.getMinuteList()
      let pickerSeconds = this.getSecondList()
      this.setData({
        pickerHours:[...pickerHours],
        pickerMinutes:[...pickerMinutes],
        pickerSeconds:[...pickerSeconds]
      })
      // 因为在这里加载了Picker 数据源,所以在这里设置默认值
      this.setDefaultDuration() 
      // () => {  this.setData({
       // duration: [1],
      //}) } 
    },
  },
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值