使用时间选择器,经常出现如图的情况,最后一位 「分钟」无法显示,iPhone7/8 机器上
[youzan/vant-weapp]时间选择器的问题
回答
麻烦提供一下核心代码
@rex-zsd 你好,核心代码就是最简单的 van-datetime-picker 使用,可以看这个 issue https://github.com/youzan/vant-weapp/issues/2486 的代码,一样的使用,借楼问下那个 issue 为啥关了,是问题描述不清楚,还是解决了呢?谢谢大佬
数据也得贴一下,以那个issue的代码为例,currentTime
filter
onConfirmTimePicker
hidePopup
分别都是什么呢?
<van-datetime-picker
type="time"
value="{{ currentTime }}"
formatter="{{ formatter }}"
filter="{{ filter }}"
bind:confirm="onConfirmTimePicker"
bind:cancel="hidePopup"
/>
还有基础库版本是什么?是否使用mpvue、wepy、taro等小程序框架? 这些issue生成器中都是要填写的,随意提issue,就贴一张图的,很难排查问题。
@rex-zsd vant-weapp 1.0.0-beta.4,基础库版本 2.10.0,没有使用框架
不好意思没写仔细
遇到同样的问题 楼主解决没
在实现自定义分钟间隔时候,我也遇到同样的问题 调试时候发现是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; }