1

我在视图的方法上访问我的集合时遇到问题,实际上,它从 initialize() 方法运行良好,但我创建了另一个 (drawVisualization()),当我尝试访问时出现未定义的错误this.collection,它是可能是一个愚蠢的问题,但我没有找到任何解决方案,我尝试在初始化方法上使用 _.bind 但在这种情况下似乎不起作用,这里是代码:

App.Views.account = Backbone.View.extend({

className: 'account',

el: $('#account-container'),

initialize: function(){
    console.log(this.collection.toJSON()); //Works fine !
    this.template = _.template($('#account-template').html());
    _.bind(this.drawVisualization, this); //Seems to be useless
},

render: function(){
//Some code...
    return this;
},

drawVisualization: function(){
      console.log(this.collection.toJSON()); //Fail because of undefined collection !
}

谢谢你的帮助 !

4

2 回答 2

1

我不知道为什么它不起作用,但尝试使用下划线的bindAll.

initialize: function(){
  _.bindAll(this);  
  this.template = _.template($('#account-template').html());
} 

bindAll对我来说,在每个视图的开头倾倒initialize是避免此类问题的好方法。

于 2012-10-15T12:13:08.703 回答
0

在主干中,您不需要绑定this到主干视图的方法。

所以尝试跳过这部分

_.bind(this.drawVisualization, this); //Seems to be useless

而是this像这样绑定:

this.collection.bind("reset", this.drawVisualization, this); 
于 2012-10-15T13:50:52.313 回答