需要js + backbone + marionette:无法读取未定义的属性'Marionette'

时间:2013-11-11 16:39:03

标签: backbone.js requirejs marionette

我刚刚开始学习骨干,并希望使用require js管理我的依赖项。

我的代码如下:

main.js:

//Require.js 
require.config({

paths   : {
    jQuery          : '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 
    jQueryUI        : '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min', 
    lodash          : 'libs/lodash/lodash', 
    backbone        : 'libs/backbone/backbone',
    marionette      : 'libs/marionette/marionette' 
}, 

shim    : {
    backbone: {
        deps        : ['jQuery', 'lodash'], 
        exports     : 'backbone'
    }, 
    marionette: {
        deps        : ['backbone'], 
        exports     : 'marionette'
    }
}

}); 

require(['initialize'], function(initializer){
    alert("initialized");
});

initialize.js:

define(['backbone', 'marionette'], function(Backbone, Marionette){

        var appZwoop = new Backbone.Marionette.Application();

        var options = {

        };

        //Initialize functions 
        appZwoop.addInitializer(function(options){

        }); 

        //Application events 
        appZwoop.on("initialize:before", function(options){

        });

        appZwoop.on("initialize:after", function(options){

        });

        //Start the application 
        appZwoop.start(options);

        appZwoop.addRegions({
            mainRegion : "#mainRegion", 
            headerRegion: "#headerRegion"
        });

        return appZwoop; 

}

浏览器控制台抛出错误:

  

未捕获的TypeError:无法读取未定义的属性'Marionette'

我做错了什么......?

1 个答案:

答案 0 :(得分:0)

更改Backbone shim以在导出中大写Backbone

backbone: {
    deps        : ['jQuery', 'lodash'], 
    exports     : 'Backbone'
}, 

因为Backbone将自己定义为Backbone而不是backbone。其他地方可能存在问题,但您必须这样做。