收藏
回答

picker-view设置了value,实际不生效。。。请问如何处理?

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows 1.03.2009140

picker-view设置了value,实际不生效。。。请问如何处理?


JS

    //生成年月日时分秒

    let date = new Date()

    let years = []

    let months = []

    let days = []

    let hours = []

    let minutes = []

    let seconds = []


    for (let i = 1990; i <= date.getFullYear(); i++) {

      years.push(i)

    }

    for (let i = 1; i <= 12; i++) {

      months.push(i)

    }

    for (let i = 1; i <= 31; i++) {

      days.push(i)

    }

    for (let i = 0; i <= 23; i++) {

      hours.push(i)

    }

    for (let i = 0; i <= 59; i++) {

      minutes.push(i)

      seconds.push(i)

    }

    _this.setData({

      years: years,

      months: months,

      days: days,

      hours: hours,

      minutes: minutes,

      seconds: seconds,

      followupdatetimeValue: [9999, 9, 2, 1, 21, 11],

    })



WXML

    <picker-view indicator-style="height: 50px;" style="width: 100%; height: 50vh;" value="{{followupdatetimeValue}}"

      bindchange="followupdatetimeChange">

      <picker-view-column>

        <view wx:for="{{years}}" wx:for-item="item" style="line-height: 50px; text-align: center;">{{item}}年

        </view>

      </picker-view-column>

      <picker-view-column>

        <view wx:for="{{months}}" wx:for-item="item" wx:for-index="idx" style="line-height: 50px; text-align: center;">{{item}}月

        </view>

      </picker-view-column>

      <picker-view-column>

        <view wx:for="{{days}}" wx:for-item="item"  style="line-height: 50px; text-align: center;">{{item}}日</view>

      </picker-view-column>

      <picker-view-column>

        <view wx:for="{{hours}}" wx:for-item="item"  style="line-height: 50px; text-align: center;">{{item}}时

        </view>

      </picker-view-column>

      <picker-view-column>

        <view wx:for="{{minutes}}" wx:for-item="item"  style="line-height: 50px; text-align: center;">{{item}}分

        </view>

      </picker-view-column>

      <picker-view-column>

        <view wx:for="{{seconds}}" wx:for-item="item"  style="line-height: 50px; text-align: center;">{{item}}秒

        </view>

      </picker-view-column>

    </picker-view>

回答关注问题邀请回答
收藏

6 个回答

  • Waibil Feng
    Waibil Feng
    2020-09-23

    晕死,终于找到解决方法。。什么鬼。。。


        setTimeout(() => {

          _this.setData({

            followupdatetimeValue: [19, 0, 1, 0, 0, 15] ,

          })

        }, 0);

    2020-09-23
    有用 2
    回复 4
    • 哇哦
      哇哦
      2020-09-25
      oh,是在哪个生命周期里设置的呢?一般赋初始值的话,可以在data里赋值,或onLoad里?
      2020-09-25
      回复
    • Waibil Feng
      Waibil Feng
      2020-09-26回复哇哦
      同一个生成过程中去设置就要加setTimeout,如果在其他事件,直接setData就行了。
      2020-09-26
      回复
    • Threebody
      Threebody
      2020-11-19
      一样的问题 果然延迟就行了 感觉还是初始化的时候数据没进去
      2020-11-19
      回复
    •  
       
      2022-05-06
      回显这东西搞我好几天了,早点看到你就好了,就延迟的问题,哎
      2022-05-06
      回复
  • 梦尋 # Junjie 🍂
    梦尋 # Junjie 🍂
    11-07

    我就另辟蹊径了 , 既然不能直接支持,就得用上骚操作

    使用 if 属性 进行重新渲染

    我是uni-app

    <view v-if="f渲染" >
    
    <picker :value="f测试" />
    
    </view>
    

    this.f渲染 = false;
    
    this.$nextTick(() => {
        this.f渲染 = true;
    });
    //-> 或者 使用延迟执行 setTimeout, 但是不推荐 使用不好会有白屏风险
    
    
    




    11-07
    有用
    回复
  • 小老🐯
    小老🐯
    04-20

    感觉这是个 bug, lifetimes.ready 或者 pageLifetimes.show 中跑了 setDate 后,也都不生效

    04-20
    有用
    回复
  • MJ682517
    MJ682517
    2023-06-23

    不建议使用延迟,使用延迟存在非常明显的闪屏问题。

    我用setData的第二个参数

    self.setData({ year, month }, () => self.setData({ pickerVal }));
    
    2023-06-23
    有用
    回复
  • Antidote
    Antidote
    2022-09-16

    setTimeout(() => {

            this.pickerValue = [0, 0, 0]

          }, 0)

    这样写也不行啊,要用$set?我是uniapp

    2022-09-16
    有用
    回复 2
    • 胜利者
      胜利者
      10-18
      老哥,有解决吗,遇到了同样的问题
      10-18
      回复
    • 梦尋 # Junjie 🍂
      梦尋 # Junjie 🍂
      11-07
      使用 if  进行重新渲染
      11-07
      回复
  • 哇哦
    哇哦
    2020-09-23

    需要在followupdatetimeChange里获取值后,重新通过setData改变followupdatetimeValue的值。

    2020-09-23
    有用
    回复 1
    • Waibil Feng
      Waibil Feng
      2020-09-23
      您好,变更值这个没问题,问题是我想设置一个默认值。如,初始化的时候,生成了年月日时分秒,现在默认都是选择了第0项,即:[0,0,0,0,0,0],我想设置当前时间,或者设置一个自定义的时间,上面的代码setData了,followupdatetimeValue为[9999, 9, 2, 1, 21, 11],也没有变成2020年10月3日2时22分12秒呀。。
      2020-09-23
      回复
登录 后发表内容
问题标签