问题描述
[问题描述:尽可能简洁清晰地把问题描述清楚]
使用 <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
})
这样就可以解决问题
6条答案
按热度按时间ca1c2owp1#
微信小程序的原生写法也是这样吗?
smtd7mpg2#
原生的我没试过,看网上别人的,好像也是这样
eni9jsuy3#
原生的我没试过,看网上别人的,好像也是这样
看谁的?
os8fio9y4#
https://developers.weixin.qq.com/community/develop/doc/cfb16aee1fa3754a8b5a8b698317f002
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: ***@***.***>
ep6jt1vc6#
在uniapp中,我是这样解决的:
我测试可行,真机还是模拟器都可以(包括安卓和苹果微信小程序)
主要感觉是不是uniapp可以封装一下解决这个问题,或者让微信那边解决,不然感觉这样写法怪难受的