简体   繁体   English

使用requirejs启动木偶模块

[英]starting marionette modules with requirejs

There is something I don't really understand about using requirejs with marionettejs. 关于将requirejs与marionettejs一起使用,我不太了解。

So I'm trying to use marionette module with 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");
        };
    }


});

The problem is that the onStart handler was never triggered because inside App.startSubApp, module1 is already instantiated. 问题在于onStart处理程序从未触发过,因为在App.startSubApp内部,module1已被实例化。

I managed to fix the problem by calling startSubApp in module1.js instead: 我设法通过在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");
    });
});

I"m fairly new to both requirejs and marionettejs so can someone explain to me the reason for this behavior? 我对requirejs和marionettejs都是陌生的,所以有人可以向我解释这种行为的原因吗?

如果您尝试在应用程序(或模块)启动时运行代码,则两者都具有可使用app.addInitializer()module.addInitializer()添加的初始化程序回调。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM