对于使用带有marionettejs的requirejs,我真的不太了解。
所以我正在尝试使用带有requirejs的牵线木偶模块。
//app.js
define(["marionette"], function(Marionette){
var App = new Marionette.Application();
App.startSubApp = function(appName, args) {...}
App.on("initialize:after", function(){
require(["app/module1"], function () {
Backbone.history.start();
App.startSubApp("module1");
});
}
});
//module1.js
define(["app"], function(App){
App.module("module1", function(Module1, App, Backbone, Marionette, $, _){
Module1.startWithParent = false;
Module1.onStart = function(){
console.log("starting module1");
};
}
});
问题是onStart处理程序从未被触发,因为在App.startSubApp中,module1已经被实例化。
我设法通过调用module1.js中的startSubApp来解决问题:
//app.js
define(["marionette" , 'vent'], function(Marionette, vent){
var App = new Marionette.Application();
App.startSubApp = function(appName, args) {...}
App.on("initialize:after", function(){
require(["app/module1"], function () {
Backbone.history.start();
vent.trigger("start:module1");
});
}
});
//module1.js
define(["app",'vent'], function(App, vent){
App.module("module1", function(Module1, App, Backbone, Marionette, $, _){
Module1.startWithParent = false;
Module1.onStart = function(){
console.log("starting module1");
};
}
vent.on('start:module1', function(){
App.startSubApp("module1");
});
});
我对requirejs和marionettejs都相当新,所以有人可以向我解释这种行为的原因吗?
答案 0 :(得分:0)
如果您尝试在应用(或模块)启动时运行代码,则两者都有初始值设定回调,您可以使用app.addInitializer()和module.addInitializer()
添加