我正在編寫具有三個類似子佈局的Marionette佈局。他們每個人都是同一個班級的一個實例。下面的代碼:Marionette.Backbone.js集合onRequest調用所有實例
Marionette.Layout.extend({
subCollection1: new SubCollection(),
subCollection2: new SubCollection(),
subCollection3: new SubCollection(),
initialize: function() {
this.subView1 = new subView ({
collection: this.subCollection1)
});
this.subView2 = new subView ({
collection: this.subCollection2)
});
this.subView1 = new subView ({
collection: this.subCollection3)
});
},
onRender: function() {
this.Reg1.show(this.subView1);
this.Reg2.show(this.subView2);
this.Reg3.show(this.subView3);
},
fetchColletions: function() {
this.subCollection1.fetch({ data: { /* some data for webserver */ } });
this.subCollection2.fetch({ data: { /* some data for webserver */ } });
this.subCollection3.fetch({ data: { /* some data for webserver */ } });
}
});
然後在我的subLayout我綁定功能,收集請求在初始化函數是這樣的:
Marionette.Layout.extend({
onCollectionRequest: function() {
console.log('summary.onCollectionRequest ' + this.cid);
//debugger;
},
initialize: function() {
this.listenTo(this.collection, 'request', this.onCollectionRequest);
}
});
時,要求獲取任何這些藏品的問題觸發請求事件在所有三個集合,所以我得到記錄是這樣的:
fetchcollections
GET/*服務器URL */200 OK 157ms
onCollectionRequest view15
onCollectionRequest view24
onCollectionRequest view33
GET/*服務器URL */200 OK 332ms
onCollectionRequest view15
onCollectionRequest view24
onCollect ionRequest view33
/*等了第三個*/
我缺少的東西?我一直認爲事件綁定是每個實例不是每個類。我應該如何解決這個問題?
P.S.我的代碼被包含在require.js define()中,但我認爲這對我的問題沒有意義,所以我在代碼片段中省略了它。
您的fetchCollections方法觸發三個集合的提取。我不明白爲什麼你會驚訝,如果事件在所有這些事件中被觸發 – ejosafat
看看我的帖子末尾的日誌。我很驚訝,因爲他們每個人都被觸發了三次。每次抓取一次。如果我刪除了subcollection2.fetch和subcollection3.fetch,它仍然會調用所有三個事件。 –
您是否創建第一個佈局的多個實例? – martin