uni-app picker-view 无法正确初始化

inn6fuwd  于 4个月前  发布在  uni-app
关注(0)|答案(6)|浏览(61)

问题描述
[问题描述:尽可能简洁清晰地把问题描述清楚]

使用 <picker-view> 自定义下拉初始化的时候,不能正确初始化,第一列总是选中第一个

复现步骤
[复现问题的步骤]

比如我这样

<picker-view :value="checks" @change="change">
    <picker-view-column v-for="index in lists" :key="index">
         <view v-for="(val, key) in lists[index]" :key="key">{{val}}</view>
    </picker-view-column>
</picker-view>

实现了一个多列下拉

假设是选中地区的,省、市、区有三级,比如初始化的时候value=[3,0,0]

[或者可以直接贴源代码]

预期结果
[使用简洁清晰的语言描述你希望生效的预期结果]

我们期望第一个第4项被选中,后面两个都是第1项被选中

实际结果
[这里请贴上你的报错截图或文字]

第一个还是第1项被选中

系统信息:

  • 发行平台: 微信小程序
  • 操作系统 IOS和安卓,包括电脑模拟器都一样
  • HBuilderX版本 3.8.3.20230526
  • uni-app版本 vue2
  • 设备信息 iPhone13

补充信息
[可选]
[根据你的分析,出现这个问题的原因可能在哪里?]

我怀疑是,picker-view初始化的时候不会管你选中了谁,后面你修改value才可以

用setTimeout,让value的设置推迟到下一轮刷新,这样就保证了初始化完毕,就像这样:

let checks=this.checks
this.checks=[0,0,0]
 setTimeout(()=>{
  this.checks=checks
 })

这样就可以解决问题

ca1c2owp

ca1c2owp1#

微信小程序的原生写法也是这样吗?

smtd7mpg

smtd7mpg2#

原生的我没试过,看网上别人的,好像也是这样

eni9jsuy

eni9jsuy3#

原生的我没试过,看网上别人的,好像也是这样

看谁的?

lf3rwulv

lf3rwulv5#

那你试试按照这样的逻辑来写可以吗?Sent from my iPhoneOn Jun 12, 2023, at 16:18, z Z ... ***@***.***> wrote: https://developers.weixin.qq.com/community/develop/doc/cfb16aee1fa3754a8b5a8b698317f002 —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>

ep6jt1vc

ep6jt1vc6#

在uniapp中,我是这样解决的:

我测试可行,真机还是模拟器都可以(包括安卓和苹果微信小程序)

主要感觉是不是uniapp可以封装一下解决这个问题,或者让微信那边解决,不然感觉这样写法怪难受的

相关问题