倒数计时器在 vue js 中不起作用弹出

Countdown timer not working in vue js pop up

我正在尝试在倒计时后重定向到另一个网站。重定向有效,但倒计时仅减少一次。

例如: 我已将计数器设置为 5。但是当弹出窗口打开时,它显示 4 并且不会进一步减少。

<p>Redirecting in {{ counter }}</p>
<script>
export default {
    name: "modal",
    data() {
        return {
            toggleModal: false,
            counter: 5
        }
    },
    methods: {
        showModal() {
            this.toggleModal = true;
            this.countDown();
        },
        countDown() {
            if(this.counter > 0) {
                this.counter--;
                setTimeout(() => {
                    window.location.href = 'https://www.google.com';
                }, 5000);
            }
        },
    }
};
</script>

基本上你的代码现在正在做的是等待 5 秒并重定向,它重定向的一个副作用是它将倒计时减 1。

您需要做的是递减计数器,每秒递减一次,直到它变为零,然后在您想要进行重定向的下一个滴答声中。

我们首先检查倒计时是多少。如果它大于零,我们要等待一秒钟,然后将计数器减一,然后再次检查。

countDown() {
    //If the counter has not reached the end
    if(this.counter > 0) {
        //Wait 1 second, then decrement the counter
        setTimeout(()=>{
            this.counter--;
            this.countDown();
        },1000)
    }
    else
    {
        //Count down has reached zero, redirect
        window.location.href = 'https://www.google.com';
    }
},