Home > front end >  Trigger a function if countdown reaches 0 - VueJS
Trigger a function if countdown reaches 0 - VueJS

Time:05-30

I have created a countdown timer which decrease a number in the template perfectly, but now I need it to launch a function declared within methods after it reaches 0. I've tried to check if condition is met within methods but it doesn't launch anything when reaching 0.

Here is my index.vue

<template>
  <div>
    {{ timerCount }}
  </div>
</template>

<script>
export default {
  data(){
     return{
        timerCount: 60
     }
   },

  watch: {
    timerEnabled(value) {
      if (value) {
        setTimeout(() => {
         this.timerCount = this.timerCount - 1;
        }, 1000);
      }
    },
    timerCount: {
      handler(value) {
        if (value > 0 && this.timerEnabled) {
          setTimeout(() => {
            this.timerCount = this.timerCount - 1;
          }, 1000);
        }
      },
      immediate: true
    },
  },

  methods:{
    launchThis() {
       // I need this function to be launched if timerCount reaches 0
     }
  }
}
</script>

Any guidance to make it work will greatly appreciated.

CodePudding user response:

You can use something like this

<script>
export default {
  watch: {
    timerCount: {
      handler(value) {
        if (value > 0 && this.timerEnabled) {
          setTimeout(() => {
            this.timerCount = this.timerCount - 1;
          }, 1000);
        } else {
          this.launchThis() // run your function here
        }
      },
      immediate: true
    },
  },
}
</script>
  • Related