我正在与Backbone.Marionette和requireJS的一个奇怪的问题作斗争。
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 (起始点)中,我需要上面的代码并想要启动它。但是在Marionette.Application()上失败了;
当我查看marionette.js时,我可以清楚地看到使用_initRegionManager-方法扩展应用程序的下划线。另外,在Marionette对象的原型列表中,我还可以看到该方法。
你知道我这里漏掉了什么吗?
发布于 2013-06-29 04:12:29
您的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();https://stackoverflow.com/questions/17362109
复制相似问题