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

Uncaught TypeError: Cannot read property 'EventAggregator' of undefined
backbone.marionette.js:1504


显示它在实际的marionette库中。我看过那条线:

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是对木偶的依赖。

您已经指定了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();
});


});

关于javascript - 未捕获的TypeError:无法读取未定义的属性“EventAggregator”(主干, Marionette ,RequireJS),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12901376/

10-12 04:23