0

我正在为 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(起点)中,我需要上面的代码并想启动它。但它在 Marionette.Application(); 失败了。

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

任何想法我在这里缺少什么?

4

1 回答 1

3

您的 require.config ({ ... }) 应该在 main.js 中,并且正如 Ratweb_on 所指出的,require.config 中不应有“deps: ['main']”。您可以在此处按照此示例进行操作,而忽略 jquerymobile 的内容。本质上,它以与您的代码预期相同的方式进行初始化。请参阅main.jsapp.js

更新

在你的 app.js

var app = Marionette.Application();

应该

var app = new Marionette.Application();
于 2013-06-28T20:12:29.330 回答