Scrooge
Scrooge
  • 发布:2024-01-11 14:55
  • 更新:2024-01-11 15:36
  • 阅读:342

【报Bug】IOS14.7版本下,picker下拉框不显示数据

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 3.8.12

手机系统: iOS

手机系统版本号: iOS 14

手机厂商: 苹果

手机机型: iphone12

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<picker  
      range-key="name"  
      :value="current"  
      :range="getOptions"  
      :disabled="disabled || readonly"  
      @change="bindPickerChange"  
    >  
      <view class="input-value u-justify-end">  
        <view :class="{ disabled: disabled, placeholder: selectItem == placeholder }">  
          {{ selectItem }}  
        </view>  
        <uni-icons v-if="!readonly && !disabled" type="forward" :color="iconColor" size="16" />  
      </view>  
</picker>

操作步骤:

点击组件打开弹窗

预期结果:

正常显示下拉框数据

实际结果:

下拉框空白

bug描述:

iphone12 ios14.7真机环境下,picker下拉框不显示任何数据

2024-01-11 14:55 负责人:无 分享
已邀请:
搬砖大老

搬砖大老 - 大老不是大佬

getOptions 是一个方法吗? 如果是方法 getOptions() 这么写 试试, 且方法要return数据

  • Scrooge (作者)

    是一个获取字典数据的computed


    const getOptions = computed(() =>  
    props.dictCode ? store.getters['common/getOptionsByCode'](dictListMap.subPassengerCar[props.dictCode]) : props.options
    );

    2024-01-12 15:11

HRK_01

HRK_01

我这边测试可以正常显示数据,请提供一下完整工程(包含getOptions)

  • Scrooge (作者)

    这个组件在ios15以上的版本中都没有问题,且在安卓系统中也没有问题,这个问题第一次发现是在ios14.6版本上


    以下是改组件的相关部分代码


    // 绑定数据变量  
    const current = ref(0);

    // 根据dictCode获取字典数据
    const getOptions = computed(() =>
    props.dictCode ? store.getters['common/getOptionsByCode'](dictListMap.subPassengerCar[props.dictCode]) : props.options
    );

    // 选择器change事件
    const bindPickerChange = (e) => {
    const value = e.detail.value;
    if (!unref(getOptions)[value]) return;
    emits('update:modelValue', unref(getOptions)[value].value);
    emits('change', unref(getOptions)[value]);
    };

    2024-01-12 15:15

  • HRK_01

    回复 Scrooge: 将getOption替换为普通的模拟数据(而不是通过store.getters)在ios14.6下可以正常使用吗

    2024-01-13 16:29

  • Scrooge (作者)

    回复 HRK_01: 回复 HRK_01: 我写死了模拟数据进行测试,结果还是不显示。


    [{ name: '标签1', value: 1 }, { name: '标签2', value: 2 }]

    在低版本的ios下有没有可能是样式导致了不显示的问题呢?

    2024-01-15 13:58

  • HRK_01

    回复 Scrooge: 在ios13都能正常显示,应该是你数据绑定的方式不太对,能否提供一下,简单的demo(用zip压缩包附件形式上传)

    2024-01-15 17:04

  • Scrooge (作者)

    回复 HRK_01: 昨天整体测试了一下,其余页面的picker在ios14下均正常,只有这个页面的picker不显示,这个页面里有个封装的popup组件,当我注释掉这个组件之后,picker就能正常的显示了。


    以下是当前页面引用SharePopup部分的代码:


    <template>  
    <LayoutPage title="征信授权">
    <div>...</div>

    <SharePopup ref="sharePopup" :show-msg="true" @register="handlePopupRegister" @close="closePopup" />
    </template>

    以下是SharePopup组件部分代码:


    <template>  
    <uni-popup style="height: 0" ref="popup" background-color="#fff" @maskClick="closePopup">
    <view>...</view>
    <view class="popup-foot py-4" @click="closePopup">取消</view>
    </uni-popup>
    </template>

    <script>
    const props = defineProps({
    showMsg: {
    type: Boolean,
    default: false,
    },
    });

    const popup = ref(null);

    const closePopup = () => {
    popup.value.close();
    emits('close');
    };
    </script>

    现在问题就被定位到uni-popup组件在ios14下是否会与picker冲突呢

    2024-01-17 10:34

要回复问题请先登录注册