diff --git a/src/calendar/components/Month.js b/src/calendar/components/Month.js index 422e93af9..26d25c498 100644 --- a/src/calendar/components/Month.js +++ b/src/calendar/components/Month.js @@ -80,6 +80,10 @@ export default createComponent({ }, methods: { + scrollIntoView() { + this.$refs.days.scrollIntoView(); + }, + getDayType(day) { const { type, minDate, maxDate, currentDate } = this; @@ -166,12 +170,14 @@ export default createComponent({ genDays() { if (this.visible) { return ( - <div class={bem('days')}> + <div ref="days" class={bem('days')}> {this.genMark()} {this.days.map(this.genDay)} </div> ); } + + return <div ref="days" />; }, genDay(item, index) { diff --git a/src/calendar/index.js b/src/calendar/index.js index 501ec8954..efb294581 100644 --- a/src/calendar/index.js +++ b/src/calendar/index.js @@ -158,7 +158,7 @@ export default createComponent({ this.months.some((month, index) => { if (compareMonth(month, targetDate) === 0) { - this.$refs.months[index].$el.scrollIntoView(); + this.$refs.months[index].scrollIntoView(); return true; } diff --git a/src/calendar/test/index.spec.js b/src/calendar/test/index.spec.js index 62fbfde2c..b95ad7398 100644 --- a/src/calendar/test/index.spec.js +++ b/src/calendar/test/index.spec.js @@ -419,7 +419,7 @@ test('should scroll to current month when show', async done => { }); Element.prototype.scrollIntoView = function() { - expect(this).toEqual(wrapper.findAll('.van-calendar__month').at(3).element); + expect(this.parentNode).toEqual(wrapper.findAll('.van-calendar__month').at(3).element); done(); };