0

バックボーンを使って練習するための時計をほとんど使っていませんが、止めることができません。現在の間隔のIDを返して止めようとしていますが、機能しません。私が間違っているのは何ですか?

   var app = {
    lap: Backbone.Model.extend({
     defaults: {
       time: 0
     }
    }),
    views: {
      home: Backbone.View.extend({
        el: $('#the-clock'),
        tagName: 'div',
        events: {
          "click #save-lap" : "stopWatch"
      },
      render: function(){
         var time = this.theWatch(),
             tpl = '<button id="save-lap"></button><span id="clock">Son las <%= time %></span>';

         $(this.el).html( _.template(tpl,time));
      },
        theWatch: function(){
          var currentTime = new Date(),
              currentHour = currentTime.getHours(),
              currentMinutes = currentTime.getMinutes(),
              currentSeconds = currentTime.getSeconds(),
              timeOfDay = (currentHour < 12) ? "AM":"PM";

          return data = {
              time: currentHour + ':' + currentMinutes + ':' + currentSeconds + ' ' + timeOfDay
          }
      },
      updateWatch: function(){
          return setInterval(
              function(){
                  this.render();
              }.bind(this),
              1000
          )
      },
      stopWatch: function(){
          console.log('stop')
          var clock = this.updateWatch();
          clearInterval(clock);
      },
      initialize: function(){
          this.render();
          this.updateWatch();
      }
  })
},
ini: function(){
  var Home = new this.views.home();
}
};

 (function(){
    app.ini();
  })();

ありがとう!

4

2 に答える 2

3

this.updateWatch()を呼び出すことにより、停止するたびに新しい間隔を作成します。代わりにこれを試してください:

updateWatch: function(){
    return setInterval(
        function(){
            this.render();
        }.bind(this),
        1000
    )
},
stopWatch: function(){
    clearInterval(this.clockInterval);
},
initialize: function(){
    this.render();
    this.clockInterval = this.updateWatch();
}
于 2012-12-20T23:05:38.180 に答える
0

updateWatchを呼び出すたびに、「Interval」オブジェクトを再作成しています。

代わりに、setIntervalの結果をプロパティに格納する必要があります。停止したいときに再利用します。

于 2012-12-20T22:07:39.997 に答える