Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:无法读取属性';事件聚合器';未定义的类型(主干、木偶、RequireJS)_Javascript_Backbone.js_Requirejs_Underscore.js_Marionette - Fatal编程技术网

Javascript 未捕获类型错误:无法读取属性';事件聚合器';未定义的类型(主干、木偶、RequireJS)

Javascript 未捕获类型错误:无法读取属性';事件聚合器';未定义的类型(主干、木偶、RequireJS),javascript,backbone.js,requirejs,underscore.js,marionette,Javascript,Backbone.js,Requirejs,Underscore.js,Marionette,使用主干创建新应用程序。Marionette,当我运行Express应用程序并加载页面时,在控制台中出错: Uncaught TypeError: Cannot read property 'EventAggregator' of undefined backbone.marionette.js:1504 显示它在实际的木偶库中。我已经看过那一行了: Marionette.EventAggregator = Backbone.Wreqr.EventAggregator; 我想,wreqr可

使用主干创建新应用程序。Marionette,当我运行Express应用程序并加载页面时,在控制台中出错:

Uncaught TypeError: Cannot read property 'EventAggregator' of undefined 
backbone.marionette.js:1504
显示它在实际的
木偶
库中。我已经看过那一行了:

Marionette.EventAggregator = Backbone.Wreqr.EventAggregator;
我想,
wreqr
可能是我必须添加的额外库

以下是创建应用程序的代码:

require([
    'jquery', 
    'underscore', 
    'backbone', 
    'marionette'
], function( $, _, Backbone, Marionette ){
    MyApp = new Backbone.Marionette.Application();

    MyApp.addRegions({
        main_region: '#main_region'
    });

    MyApp.addInitializer( function(options) {
        var login_form_view = new LoginFormView();
    });
});
以及设置库位置的require配置:

// using RequireJS 1.0.7
    require.config({
        paths: {
            '$': 'libs/jquery-1.8.2-min',
            'underscore': 'libs/underscore-min', // AMD support
            'backbone': 'libs/backbone.min', // AMD support
            'bootstrap' : 'libs/bootstrap.min',
            'marionette' : 'libs/backbone.marionette', 
            'wreqr' : 'libs/backbone.wreqr',
            'templates': '../templates',
            'text': 'libs/require/text', 
            'login': 'views/user/login'
        }
    });

有人知道错误的原因吗?

是的,wreqr依赖于木偶

require([
     'jquery', 
     'underscore', 
     'backbone', 
     'wreqr',
     'marionette'
], function( $, _, Backbone, Marionette ){
MyApp = new Backbone.Marionette.Application();

MyApp.addRegions({
    main_region: '#main_region'
});

MyApp.addInitializer( function(options) {
    var login_form_view = new LoginFormView();
});
您已经指定了Wreqr的路径,但也需要加载它。在你装木偶之前

require([
     'jquery', 
     'underscore', 
     'backbone', 
     'wreqr',
     'marionette'
], function( $, _, Backbone, Marionette ){
MyApp = new Backbone.Marionette.Application();

MyApp.addRegions({
    main_region: '#main_region'
});

MyApp.addInitializer( function(options) {
    var login_form_view = new LoginFormView();
});

}))

谢谢,我会试一试,然后再报告。一秒钟,成功!还必须添加EventBinder:FYI:v1.0.0-beta2,我这样做是为了“backbone.marionete.js”文件包含Wreqr和EventBinder。不过,如果需要,您可以下载“core”marionete.js文件,而不需要依赖项。