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

- 发布:2025-04-18 17:33
- 更新:2025-04-18 22:52
- 阅读:83
产品分类: uniapp/H5
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows10
浏览器平台: Chrome
浏览器版本: 135.0.7049.86
项目创建方式: CLI
CLI版本号: @vue/cli 5.0.8
示例代码:
操作步骤:
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.如果当前时间包含年月日时分秒,点击时分秒,出现弹框,此时我只想清除时分秒的数据时不能清楚
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()
// --- 修改结束 ---
},
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 的效果
所以无法实现点击“清除”按钮将 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 的效果
1 个回复
DCloud_UNI_JBB
收到反馈,会评估一下是否修改