使用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'
}
});
有人知道可能导致错误的原因吗?
答案 0 :(得分:2)
是的,wreqr是对Marionette的依赖。
您已指定Wreqr的路径,但您也需要加载它。在加载Marionette之前。
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();
});
});