4

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

这是我的观点的一个片段。

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

有什么建议么?

4

2 回答 2

8

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

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

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

于 2012-06-27T20:38:23.450 回答
4

你可以这样做:

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

afterInterval现在是一个回调,它可以访问this视图。

于 2012-06-27T20:50:42.837 回答