timer
在组件的
data
id
,然后在
invalidateTimer
window
找到它。。。
data() {
return {
slideIndex: 1,
timer: '',
timerId: ''
}
},
mounted() {
this.showSlides(this.slideIndex);
this.startTimer();
},
methods: {
// Timer
startTimer() {
this.timer = setInterval(() => {
this.plusSlides(1);
}, 4500);
this.timerId = this.timer._id
},
invalidateTimer() {
var ids = window.setTimeout(function() {}, 0);
while (ids--) {
if (ids == this.timerId) {
window.clearTimeout(ids);
break;
}
}
},
// Next/Prev controls
plusSlides(n) {
this.invalidateTimer();
this.startTimer();
this.showSlides((this.slideIndex += n));
},
我的业务逻辑已经更新。它在点击prev/next时使计时器失效,然后简单地重置计时器,以便在4500ms后自动滑动。