我正在構建一個使用require.js進行模塊加載和Marionette以幫助我構建應用程序和功能的Backbone應用程序。我已成立了一個要求對事件聚集這樣的模塊: -Backbone EventAggregator問題和問題
define(['backbone', 'marionette'],function(Backbone, Marionette){
var ea = new Backbone.Wreqr.EventAggregator();
ea.on('all', function (e) { console.log("[EventAggregator] event: "+e);});
return ea;
});
我希望把它傳遞到我的其他需要的模塊,並把它的功能爲中心的事件處理和通訊組件,我得到一些成功與此。我可以通過通風口作爲依賴,其他模塊沒有問題,像這樣: -
define(['marionette', 'text!templates/nav.html', 'shell/vent'], function (Marionette, text, vent) {
return SplashView = Marionette.ItemView.extend({
template : text,
events : {
'click #splashContinueButton': 'onButtonClick'
},
onButtonClick : function(evt) {
vent.trigger('onSplashContinueClick');
}
});
});
我遇到的問題是,雖然所有的事件都在不同的地方在我的應用越來越觸發(我可以看到在控制檯日誌中),我無法在我的應用程序的某些部分收聽它們。比如我有一個木偶模塊(在運行時加載的要求模塊),這是試圖拿起一些這樣的活動: -
我什麼也沒得到,即使當我登錄通風口從這個地方我可以將其視爲一個對象。在日誌中,它包含的事件數組實際上只包含根級應用程序正在偵聽的事件,而不包含應用程序其他部分正在偵聽的任何其他事件。這是我理解崩潰的地方:我認爲我可以使用事件聚合器作爲跨應用程序結構的全局通信和消息傳遞系統。任何人都可以擺脫對可能發生的事情的任何見解嗎?
許多感謝,
山姆
* UPDATE /編輯/解決方案*
你好,好了,我有張貼(僅5分鐘後,現在它的工作以上 - doh!)。基本上,在模塊的初始化器事件中添加我的監聽器還爲時過早(據我所知)。我將它們沿功能鏈進一步移動,現在一切都按預期行事。
你可以發佈您的解決方案作爲一個答案?也許有更多的細節?這可能有助於未來的人。 – nikoshr 2013-04-23 14:01:51
@nikoshr - 你去了。 – SamBrick 2013-04-23 14:38:40