diff --git a/src/datetime-picker/TimePicker.js b/src/datetime-picker/TimePicker.js index 46291a7c4..8ebf5d202 100644 --- a/src/datetime-picker/TimePicker.js +++ b/src/datetime-picker/TimePicker.js @@ -74,9 +74,9 @@ export default createComponent({ }, updateInnerValue() { - const indexes = this.$refs.picker.getIndexes(); - const hour = this.originColumns[0].values[indexes[0]]; - const minute = this.originColumns[1].values[indexes[1]]; + const [hourIndex, minuteIndex] = this.$refs.picker.getIndexes(); + const hour = this.originColumns[0].values[hourIndex] || this.originColumns[0].values[0]; + const minute = this.originColumns[1].values[minuteIndex] || this.originColumns[1].values[0]; const value = `${hour}:${minute}`; this.innerValue = this.formatValue(value); diff --git a/src/datetime-picker/test/time-picker.spec.js b/src/datetime-picker/test/time-picker.spec.js index 596f8099e..d0fbaa619 100644 --- a/src/datetime-picker/test/time-picker.spec.js +++ b/src/datetime-picker/test/time-picker.spec.js @@ -107,3 +107,19 @@ test('change min-minute and emit correct value', async () => { wrapper.find('.van-picker__confirm').trigger('click'); expect(wrapper.emitted('confirm')[0][0]).toEqual('12:30'); }); + +test('set max-hour & max-minute smaller than current then emit correct value', async () => { + const wrapper = mount(TimePicker, { + propsData: { + value: '23:59', + } + }); + await later(); + wrapper.setProps({ + maxHour: 2, + maxMinute: 2, + }); + + wrapper.find('.van-picker__confirm').trigger('click'); + expect(wrapper.emitted('confirm')[0][0]).toEqual('00:00'); +});