0

在我的主干函数中,我为我创建了一个命名空间,因为var taskListPhraseI = {};在使用这个命名空间时,我的所有函数都被分配了。

当我从集合类中获取集合时,使用我传递给的每个函数renderBoard,在每个都不会知道this这一点上的关键字时,我使用了一个声明为该关键字并分配给它的变量,使用that我正在调用该函数,但将render 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 回答