Marionette.Application()没有方法initRegionManager

时间:2013-06-28 10:02:54

标签: requirejs marionette

我正在努力解决Backbone.Marionette的一个奇怪的问题,一个requireJS。

RquireJS配置为https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs说:

require.config({

deps: ['main'],

paths : {
    backbone : '../vendor/backbone.marionette/backbone',
    underscore : '../vendor/underscore/underscore',
    jquery : '../vendor/jquery/jquery',
    marionette : '../vendor/backbone.marionette/backbone.marionette.min'
},
shim : {
    jquery : {
        exports : 'jQuery'
    },
    underscore : {
        exports : '_'
    },
    backbone : {
        deps : ['jquery', 'underscore'],
        exports : 'Backbone'
    },
    marionette : {
        deps : ['jquery', 'underscore', 'backbone'],
        exports : 'Marionette'
    }
}
});

main.js:

require([
    'app'
],
function(App) {
    App.start();
}
);

app.js:

define([
    'marionette'
],
function(Marionette) {
    var app = Marionette.Application();
    return app;
}
);

但是,当我想启动一个应用程序时,我的控制台说:

Uncaught TypeError: Object #<Object> has no method '_initRegionManager' 

到目前为止我没有做任何特别的事情:

define(
[
    'marionette'
],
function(Marionette) {
    "use strict";

    var app = Marionette.Application();

    // app.on('initialize:after', function() {
    //  console.log("Initialize:After");
    // });
    return app;
}
);

在main.js(Startingpoint)中,我需要上面的代码并想要启动它。 但它在Marionette.Application();

失败了

当我查看marionette.js时,我可以清楚地看到使用_initRegionManager-Method扩展应用程序的下划线。同样在Marionette-Object的Prototype列表中,我可以看到该方法。

我在这里缺少什么想法?

1 个答案:

答案 0 :(得分:3)

您的require.config({...})应该在main.js中,并且如Ratweb_on所示,require.config中不应该有“deps:['main']”。 您可以关注此example in here,并忽略jquerymobile内容。基本上它以与代码预期相同的方式进行初始化。 请参阅main.jsapp.js

<强>更新

在你的app.js

var app = Marionette.Application();

应该是

var app = new Marionette.Application();