超级帅
超级帅
  • 发布:2024-07-08 16:21
  • 更新:2025-05-12 17:44
  • 阅读:362

【报Bug】picker-view app端动态数据设置默认选中,视图与设置不对应

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: window11

HBuilderX类型: 正式

HBuilderX版本号: 4.15

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 小米9p

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
    <picker-view :indicator-style="indicatorStyle" :value="addressValue" @change="addressChange"  
                    class="picker-view">  
                    <picker-view-column>  
                        <view class="item" v-for="(item,index) in provinceData" :key="index">{{item.fullname}}  
                        </view>  
                    </picker-view-column>  
                    <picker-view-column>  
                        <view class="item" v-for="(item,index) in cityData" :key="index">{{item.fullname}}  
                        </view>  
                    </picker-view-column>  

                    <picker-view-column>  
                        <view class="item" v-for="(item,index) in districtData" :key="index">{{item.fullname}}  
                        </view>  
                    </picker-view-column>  
                </picker-view>

操作步骤:

如我传图片所示,在APP开发者基座调试下,
动态接口数据1级 -》接口获取2级-》接口获取三级的情况下设置无效

预期结果:

动态数据三级联动 ,设置:value 视图无效 例如[0,0,0] 显示为[0,0,0]

实际结果:

动态数据三级联动 ,设置:value 视图无效 例如[0,0,0] 显示为[1,1,1]

bug描述:

picker-view

1.动态数据三级联动 ,设置:value 视图无效 例如[0,0,0] 显示为[1,1,1]

2.这个需要在APP端,必须是动态数据才能复现,web 没有问题

3.如我传图片所示,在APP开发者基座调试下,
动态接口数据1级 -》接口获取2级-》接口获取三级的情况下设置无效

4.实际提交打印数据为【0,0,0】 只是视图无效

2024-07-08 16:21 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

我这里测试的没有问题,但是可能不能完全复刻你的代码,你可以给出一个测试工程吗?

下面是我测试的视频

z***@saladaccount.com

z***@saladaccount.com - 开发者

一样的问题,我的项目都不是三级联动,只有一列。我是封装的一个组件。

value绑定的是 selectedMenuItems变量。

<picker-view ref="popMenu" class="menu" indicator-class="picker-box" @change="bindPickedItemChange" value="selectedMenuItems"> <picker-view-column>
<view v-for="(menuItem, index) in menuItems" :key="index" class="menu-item">
<image class="item-icon" v-if="menuItem.itemIcon" :src="menuItem.itemIcon"></image>
{{menuItem.itemText}}<text v-if="menuItem.remarkText" style="menuItem.remarkStyle">{{menuItem.remarkText}}</text> </view>
</picker-view-column>
</picker-view>

data中初始化是
...
selectedMenuItems: [0]
...

在组件的watch中,监视属性设定中,设置menu的items和初始选中值 value

...
var component = this
setTimeout(() => {
component.selectedMenuItems = [menuConfig.pickedItemIndex] // [0]
}, 0)
...

发布成web项目,在H5上运行没有问题,组件显示时,被选择的是[0]。
发布成App,组件picker-view视图显示的就是选择[1],都不清楚这个1是怎么来的。

  • z***@saladaccount.com

    昨晚又想了想几个可能发生问题的点,今早一试一个点,问题就解决了。


    我的问题在data中付初值


    ...

    selectedMenuItems: [0] // 改为 [] 后再动态改变value后显示正常

    ...


    我猜测是因为一开始picker-view的条目也是空(后需要动态赋予),设置了 value 为[0],导致了picker-view内部的选择机制代码发生了某种异常,从而导致App后续再动态更改value都不生效了(但H5上是表现正常的)。所以具体原因,还是需要uniapp的开发人员查一下。

    2025-05-13 09:43

要回复问题请先登录注册