Добавление на вход через setInterval не работает

1

Посмотрите на мой код https://jsfiddle.net/kL5d4y08/ Когда я нажимаю кнопку "изменить", вход должен отсчитываться от нуля, чтобы скрыть этот ввод, но когда я показываю вход, значение от входа должно быть равно 0 еще раз. Как я могу это сделать?

<script src="//unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <input :value="change" v-if="val1">
  <br/>
  <button @click="switchOn">Change</button>


</div>

var Main = {
    data() {
      return {
        val1: false,
                val2: 0,
      }
    },
    methods: {
    switchOn(){
    this.val1=this.val1==false?true:false
    },
    addUp(){
    setInterval(function(){this.val2++},2000);
    }
    },
    computed:{
    change(){ this.addUp(); return this.val2; }

    }
  }
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
  • 0
    Ах да спасибо
  • 0
    @NisargShah Берт
Теги:
vue.js

1 ответ

0

В принципе, здесь вам нужно использовать clearInterval чтобы остановить созданный интервал и сбросить счетчик до нуля.

console.clear()
var Main = {
  data() {
    return {
      val1: false,
      val2: 0,
      interval: null
    }
  },
  methods: {
    switchOn(){
      this.val1 = !this.val1
      if (!this.val1){
        clearInterval(this.interval)
        this.interval = null
        this.val2 = 0
      } else {
       this.addUp()
      }
    },
    addUp(){
      this.interval = setInterval(() => this.val2++, 2000);
    }
  },
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
<script src="//unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <input v-model="val2" v-if="val1">
  <br/>
  <button @click="switchOn">Change</button>
  {{val1}}: {{val2}}

</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню