[youzan/vant-weapp]时间选择器的问题

2024-05-15 467 views
6

使用时间选择器,经常出现如图的情况,最后一位 「分钟」无法显示,iPhone7/8 机器上

IMG_3815

回答

8

麻烦提供一下核心代码

4

@rex-zsd 你好,核心代码就是最简单的 van-datetime-picker 使用,可以看这个 issue https://github.com/youzan/vant-weapp/issues/2486 的代码,一样的使用,借楼问下那个 issue 为啥关了,是问题描述不清楚,还是解决了呢?谢谢大佬

2

数据也得贴一下,以那个issue的代码为例,currentTime filter onConfirmTimePicker hidePopup分别都是什么呢?

<van-datetime-picker
      type="time"
      value="{{ currentTime }}"
      formatter="{{ formatter }}"
      filter="{{ filter }}"
      bind:confirm="onConfirmTimePicker" 
      bind:cancel="hidePopup" 
    />
2

还有基础库版本是什么?是否使用mpvue、wepy、taro等小程序框架? 这些issue生成器中都是要填写的,随意提issue,就贴一张图的,很难排查问题。

6

@rex-zsd vant-weapp 1.0.0-beta.4,基础库版本 2.10.0,没有使用框架

不好意思没写仔细

5

遇到同样的问题 楼主解决没

8

在实现自定义分钟间隔时候,我也遇到同样的问题 调试时候发现是filter的代码问题,如下: filter(type, options) { if (type === 'minute') { return options.filter((option) => option % 30 === 0); } return options; } 分析: 1)type是minute的时候,options返回的是当前分钟到59,比如,33~59; 2)那么,option % 30 就没有等于0的值,所以options.filter返回的数组为空,对应minute选项就为空; 3)这会导致整个datetime-picker不工作了,滑动都会回到当前时间。 建议: 1)底层代码增加options.filter的缺省值,比如 00; 2)开发者在返回options.filter的时候,增加为空时的缺省值。 filter(type, options) { if (type === 'minute') { let filteredOptions = options.filter((option) => option % 30 === 0); if (0 == filteredOptions.length) filteredOptions.push("00"); return filteredOptions; } return options; }