4

this.collection内からアクセスしようとしていますsetInterval。ただし、これは拘束されません。オブジェクト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 に答える