Marionette 嵌套模块有最大层数?

Marionette nested module has a maximum layer?

我正在与 Marionette 合作, 我正在使用模块来组织功能,但是我遇到了模块变成 undefined 的错误。测试用例为:

app.module('MainApp', function (MainApp, app, Backbone, Marionette, $, _) {
});

app.module('MainApp.TestApp', function (TestApp, app, Backbone, Marionette, $, _){
    TestApp.Controller = {
        test : function (){
            console.log('test');
        }
    };
});

app.module('TestApp.TestApp2', function (TestApp2, app, Backbone, Marionette, $, _){
    TestApp2.Controller = {
        test : function (){
            console.log('test2');
        }
    };
});

如果我调用 app.MainApp.TestApp.Controller.test();,它会正确打印 test。但是,如果 app.MainApp.TestApp.TestApp2.Controller.test(); 它显示 Uncaught TypeError: Cannot read property 'Controller' of undefined

这是否意味着我只能在 Marionette 中使用 3 层嵌套模块?还是我哪里弄错了?

据我所知,没有记录嵌套模块深度的限制。

您应该使用以下命名模式定义子模块:

Application.Module.SubModule

所以你的错误是你定义了 TestApp2 而没有 MainApp.

正确方法:

app.module('MainApp.TestApp.TestApp2', function (TestApp2, app){
    TestApp2.Controller = {
        test : function (){
            console.log('test2');
        }
    };
});

fiddle