Backbone.js将此绑定到setInterval

时间:2012-06-27 20:34:52

标签: javascript backbone.js underscore.js

我正在尝试从this.collection内访问setInterval。但是,这不受约束。我似乎无法弄清楚如何绑定它,以便this可以访问集合,而不是setInterval对象。

这是我视图中的剪辑。

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

有什么建议吗?

2 个答案:

答案 0 :(得分:8)

设置回调时,您应该bind() this所需的值:

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

如果您需要IE8兼容性,请不要忘记包含上述MDN页面中的垫片。

答案 1 :(得分:4)

你可以这样做:

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

afterInterval现在是一个回调版,可以访问该视图的this