我有一个问题是在视图的方法上访问我的集合,事实上,它在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 !
}
感谢您的帮助!
答案 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);