1***@qq.com
1***@qq.com
  • 发布:2025-04-18 17:33
  • 更新:2025-04-18 22:52
  • 阅读:83

【报Bug】uni-datetime-picker 无法实现点击“清除”按钮将 picker-view 中的时分秒重置为 00:00:00 的效果

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

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

浏览器平台: Chrome

浏览器版本: 135.0.7049.86

项目创建方式: CLI

CLI版本号: @vue/cli 5.0.8

示例代码:
        /**  
         * 用户点击“清空”按钮,清空当前值  
         */  
        clearTime() {  
            this.time = ''  
            this.$emit('change', this.time)  
            this.$emit('input', this.time)  
            this.$emit('update:modelValue', this.time)  
            this.tiggerTimePicker()  
        },

操作步骤:

1.如果当前时间包含年月日时分秒,点击时分秒,出现弹框,此时我只想清除时分秒的数据时不能清楚
2.在源码当中的clearTime是这样写的 this.time = '' this.$emit('change', this.time) this.$emit('input', this.time) this.$emit('update:modelValue', this.time)
3.这个 clearTime 方法仅仅是将 this.time 变量(这个变量主要用于在 未打开 弹窗时显示选定的值,以及在点击“确定”时 最终 返回的值)设置为空字符串 '' 。
4.它完全没有 修改组件内部用来驱动 picker-view 显示的 this.hour , this.minute , this.second 这三个数据属性。当我点击“清除”时, picker-view 界面上显示的时分秒由 this.hour , this.minute , this.second 决定。

预期结果:

1.实现点击“清除”按钮将 picker-view 中的时分秒重置为 00:00:00 的效果
2.希望点击“清除”按钮后时分秒的数据支持可配置项可以选择要 00:00:00 也可以保持现在不变
3.能配置是最好了
4.只需要修改clearTime方法即可
/**

  • 用户点击“清空”按钮,清空当前值
    */
    clearTime() {
    // --- 修改开始 ---
    // 1. 将内部时、分、秒重置为 0
    this.hour = 0
    this.minute = 0
    this.second = 0

            // 2. (可选) 更新内部 time 变量以反映 00:00:00,虽然此时不清空也不影响最终结果  
            // this.time = this._formatDisplayTime();  
    
            // 3. 移除事件发送,清除时不应直接改变外部 v-model 的值  
            // this.$emit('change', this.time)  
            // this.$emit('input', this.time)  
            // this.$emit('update:modelValue', this.time)  
    
            // 4. 保持弹框不关闭 (原代码已注释掉 tiggerTimePicker)  
            // this.tiggerTimePicker()  
            // --- 修改结束 ---  
        },  

实际结果:

所以无法实现点击“清除”按钮将 picker-view 中的时分秒重置为 00:00:00 的效果

bug描述:

文件位置:uni_modules\uni-datetime-picker\components\uni-datetime-picker\time-picker.vue
bug复现:
1.如果当前时间包含年月日时分秒,点击时分秒,出现弹框,此时我只想清除时分秒的数据时不能清楚
2.在源码当中的clearTime是这样写的 this.time = '' this.$emit('change', this.time) this.$emit('input', this.time) this.$emit('update:modelValue', this.time)
3.这个 clearTime 方法仅仅是将 this.time 变量(这个变量主要用于在 未打开 弹窗时显示选定的值,以及在点击“确定”时 最终 返回的值)设置为空字符串 '' 。
4.它完全没有 修改组件内部用来驱动 picker-view 显示的 this.hour , this.minute , this.second 这三个数据属性。当我点击“清除”时, picker-view 界面上显示的时分秒由 this.hour , this.minute , this.second 决定。
5.所以无法实现点击“清除”按钮将 picker-view 中的时分秒重置为 00:00:00 的效果

2025-04-18 17:33 负责人:无 分享
已邀请:
DCloud_UNI_JBB

DCloud_UNI_JBB

收到反馈,会评估一下是否修改

要回复问题请先登录注册