この場合、バックボーンは正常に動作するはずです。
セントラルイベントポーラーを作成します。これは(テストしていない)サーバーからのすべてのタイプのイベントを取得し、アプリケーションの残りの部分に公開:
var EventPoller = Backbone.model.extend({
url: "events/",
poll: function(){
this.fetch({
success: function(self, response){
self.handleEvents(response);
self.poll();
}, error: function(self){
self.poll();
}
})
},
handleEvents: function(events){
var self = this;
$(events).each(function(index, event){
self.trigger(event.name, event.data);
});
}
});
を次に、あなたはいくつかのモデルは、これらのイベントをリッスンさせることができます:
var StockModel = Backbone.Model.extend({
initialize : function() {
this.poller.bind('stockChange', this.changeStock, this);
},
changeStock: function(stock){
this.set({name: event.name});
}
});
そして最後にしましょう
var StockView = Backbone.View.extend({
initialize : function() {
this.model.bind('change:name', this.updateStock, this);
//this.poller.bind('stockChange', this.updateStock, this); //you could also listen for poll events directly in view with out having a model for each view.
},
updateStock: function(){
$(this.el).html(model.get("name"));
}
});
セットアップするにはポーラーとビュー:
ビューには、モデルの変化を聞きます
var eventPoller = new EventPoller();
var stockModel = new StockModel({poller: eventPoller})
var stockView = new StockView({model:stockModel});
eventPoller.poll();
一般的なアドバイスは、バックボーンの学習に数日間の労力がかかることですが、ドキュメントを読み、基本的な例を追っていくと、スピードアップにつながります。
おそらく、バックボーンで最も混乱するものはthis
です。 this
がどのように変更されるかを確認するには、アプリケーションを起動して、アプリケーションをデバッグすることをお勧めします。