Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Backbone.js bind this to setInterval

I'm trying to access this.collection from within a setInterval. However, this isn't bound. I can't seem to figure out how to bind it so that this can access the collection, not the setInterval object.

Here's a snipit from my View.

initialize: function(){
  _.bindAll(this);
},
start: function() {
  setInterval(function() {
    this.collection.each(function(item) { 
      console.log(item.id);
    });
  }, 5000);
}

Any suggestions?

like image 915
dzm Avatar asked Dec 15 '22 22:12

dzm


1 Answers

You should bind() the value of this you need when you set up the callback:

setInterval(function() {
    this.collection.each(function(item) { 
        console.log(item.id);
    });
}.bind(this), 5000);

Don't forget to include the shim from the above MDN page if you need IE8 compatibility.

like image 50
millimoose Avatar answered Jan 03 '23 21:01

millimoose