VUE.jsを使用してPomodoroタイマーを作成しようとしていますが、問題が発生した関連するコードスニペットは以下のとおりです。したがって、問題は、clearIntervalメソッドがここでは機能していないように見えることです。ページでクリア間隔がVUEで機能しない
data: {
workTimeInMin: 1,
breakTimeInMin: 1,
timeRemainInMillisecond: 0,
timerOn: false,
rest: false
},
methods: {
startOrStopTheTimer: function() {
var self = this;
var interval;
if (this.timerOn){
this.timerOn = !this.timerOn;
window.clearInterval(interval);
console.log("clearInterval");
}else {
this.timerOn = !this.timerOn;
interval = setInterval(function(){
console.log("123");
if (self.timeRemainInMillisecond <= 0) {
console.log("1");
self.rest = !self.rest;
if (self.rest) {
self.timeRemainInMillisecond = self.restTimeInMin*60*1000;
}else {
self.timeRemainInMillisecond = self.workTimeInMin*60*1000;
}
}
this.timeRemainInMillisecond = this.timeRemainInMillisecond-1000
}, 1000);
}
},
You can find a live demo here.
、私は間隔メソッドが呼び出されたセットを開始]をクリックしたとき。それから私は停止をクリックした、それは間隔をクリアするはずですが、それは私がそれを意図するように動作していないようです。コンソールを検査して、間隔がクリアされていないことを示す「123」がポップアップし続けることを容易に見つけることができます。
StackOverFlowでしばらく検索したところ、変数interval
をグローバルコンテキストに定義すると、意図したとおりに動作することがわかりました。しかし、なぜそうなのかを知りたい。
あなたのご協力をお待ちしております。前もって感謝します!
あなたはVAR間隔 'ということを理解;'値 'undefined'で新しい変数を作成しましたか? – dfsq
window.intervalを使用してグローバルに値を設定する – madalinivascu
@dfsq私はそれを認識しています。次に、forループのelse部分で間隔を 'var interval = setInterval'に設定する必要があります。だから私はなぜここで 'clearInterval'を使うことができないのだろうと思っています。 –