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(Startingpoint)中,我需要上面的代码并想要启动它。 但它在Marionette.Application();
失败了当我查看marionette.js时,我可以清楚地看到使用_initRegionManager-Method扩展应用程序的下划线。同样在Marionette-Object的Prototype列表中,我可以看到该方法。
我在这里缺少什么想法?
答案 0 :(得分:3)
您的require.config({...})应该在main.js中,并且如Ratweb_on所示,require.config中不应该有“deps:['main']”。 您可以关注此example in here,并忽略jquerymobile内容。基本上它以与代码预期相同的方式进行初始化。 请参阅main.js和app.js。
<强>更新强>
在你的app.js
中var app = Marionette.Application();
应该是
var app = new Marionette.Application();