Не могу сообразить до конца как отобразить на vue обратный таймер
Сам код:
(Часть компонента)
data(){
return {
interval: 30,
}
},
methods: {
timer() {
setInterval(function () {
if (this.interval > 0) {
this.interval--
}
//... Как дальше отобразить не могу сообразить
}, 1000);
}
},
mounted() {
this.timer();
}
Пытаюсь отобразить обратный отсчёт:
{{ interval }}
В mounted запускается таймер методом startTimer(). Таймер запускается через setInterval с промежутком 1000 ms. В момент уничтожения компонента, или когда отсчёт дойдет до нуля, таймер нужно будет выключить, поэтому в методе destroyed помещаем stopTimer(). а в блоке watch отслеживаем текущее время, и если оно окажется равным нулю, то останавливаем.
new Vue({
el: '#app',
data: {
currentTime: 5,
timer: null,
},
mounted() {
this.startTimer()
},
destroyed() {
this.stopTimer()
},
methods: {
startTimer() {
this.timer = setInterval(() => {
this.currentTime--
}, 1000)
},
stopTimer() {
clearTimeout(this.timer)
},
},
watch: {
currentTime(time) {
if (time === 0) {
this.stopTimer()
}
}
},
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<div id="app">
<p>{{ currentTime }}</p>
</div>
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости