从方法的视图访问集合

时间:2012-10-15 12:05:13

标签: backbone.js

我有一个问题是在视图的方法上访问我的集合,事实上,它在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 !
}

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

所以尝试跳过这部分

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

而是像这样绑定this

this.collection.bind("reset", this.drawVisualization, this);