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() 在木偶应用程序中的作用是什么?

编辑:感谢布莱恩提到初始化:更新小提琴后

4

2 回答 2

3

你可能早就解决了这个问题......

本质上,Marionette 应用程序和$(document).ready().

$(document).ready()是在 DOM 完全加载时触发的回调。但是,如果您将 js 加载到html 文档的底部,则不需要它。

如果由于任何原因您无法将 js 移动到 html 文档的底部,那么您需要运行任何依赖于 DOM 的代码(例如对 .render() 的调用)以在$(document).ready()回调内部。

于 2014-05-07T17:21:11.810 回答
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/

于 2013-05-07T14:12:51.917 回答