1

ビューのメソッドでコレクションにアクセスする際に問題があります。実際、initialize()メソッドからはうまく機能しますが、別のメソッド(drawVisualization())を作成しました。アクセスしようとすると、未定義のエラーが発生しますthis.collection。おそらくばかげた質問ですが、解決策が見つかりませんでした。initializeメソッドで_.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 に答える