0

私のバックボーン関数では、var taskListPhraseI = {};この名前空間を使用する場合と同じように、名前空間を作成しました。すべての関数が割り当てられています。

コレクションクラスからコレクションをフェッチしている間、渡した各関数を使用して、それぞれがこの点のキーワードrenderBoardを認識しません。そのように宣言され、これに割り当てられた変数を使用して、関数を呼び出しています。 、ただし、エラーを次のようにスローしますthisthatrender function

TypeError: that.renderBoard is not a function
[Break On This Error]   

that.renderBoard(item)

しかし、私はrenderBoard関数を持っています。これを解決するための手がかりを教えてくれませんか?

コードの私の部分:

 taskListPhraseI.allView = Backbone.View.extend({
    el:$('.boardHolder'),
    initialize:function(){
      this.collection = new taskListPhraseI.collection();
      this.collection.fetch({success:this.render});
    },
    render:function(data){
      var that = this;
      _.each(data.models, function(item){
          that.renderBoard(item) // throw the error..
      },this);
    },
    renderBoard:function(item){
      console.log('item'); // i am not getting the call here...
    }
  });
4

1 に答える 1

2

に置き換えthis.collection.fetch({success:this.render});てみてくださいthis.collection.fetch({success:_.bind(this.render, this)});

アンダースコアライブラリthis.renderで修正できるコンテキストなしで関数を渡しています。bind

于 2013-01-23T07:20:08.237 に答える