2013-05-07 30 views
2

試圖獲得一個頭左右啓動事件......

所以我創建了一個小提琴http://jsfiddle.net/erichbschulz/59cDq/這個

這:

console.log("starting"); 
MyInnerApp = new Backbone.Marionette.Application(); 
MyOuterApp = new Backbone.Marionette.Application(); 
MyInnerApp.addInitializer(function(options){ 
    console.log("MyInnerApp initializer running"); 
}); 
MyOuterApp.addInitializer(function(options){ 
    console.log("MyOuterApp Initializer running"); 
}); 
$(document).ready(function(){ 
    console.log("$(document).ready"); 
    MyInnerApp.start(); 
}); 
MyOuterApp.start(); 
console.log("end of file"); 

我發現木偶代碼在$(document).ready()之前觸發...但是情況總是如此嗎?

$(document).ready()在木偶應用程序中的作用是什麼?

編輯:感謝布賴恩的初始化提的是:後updated fiddle

+0

我完成加載應用程序依賴關係(我使用'RequireJS'來加載它們)後,我通常會調用'start'方法。 – deven98602 2013-05-07 14:13:15

回答

3

你可能長期解決這個問題...

從本質上講,有一個木偶的應用程序和$(document).ready()之間沒有任何關係。

$(document).ready()是在DOM完全加載時觸發的回調。但是,如果您在html document的底部加載了js,則不需要它。

如果因爲任何原因您不能將您的js移動到html文檔的底部,那麼您需要運行任何依賴於DOM的代碼(例如調用.render())以在回調函數$(document).ready()

2

addInitializer()運行時,應用程序初始化(MyInnerApp = new Backbone.Marionette.Application())。還有其他可以使用的應用程序事件:after應用程序已初始化或已啓動。

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.md#application-event

MyInnerApp.on("initialize:after", function(){ 
    console.log("MyInnerApp initialize:after"); 
}); 

MyInnerApp.on('start', function(){ 
    console.log("MyInnerApp start"); 
}); 

http://jsfiddle.net/bryanbuchs/uMTnv/

+0

謝謝布賴恩 - 我應該提到我讀了doco :-)但是初始化:事件之後是相關的。文件readyso似乎也沒有解決,這個問題是關於文件準備的。我已經更新了小提琴,以包括初始化:之後 – ErichBSchulz 2013-05-07 23:48:05