在我的应用中,我有一个类似的地区:
define(['jquery','underscore','backbone','marionette'],
function ($,_,Backbone,Marionette) {
"use strict";
socialApp = window.socialApp || {};
socialApp.AppLayout = Backbone.Marionette.LayoutView.extend({
template:'#appTemplate',
regions: {
header : '#header',
content : '#content',
footer : '#footer'
},
initialize:function(){
console.log('layout intialized');
}
});
return socialApp.AppLayout;
});
附加我的区域我有这样的容器:
define(['jquery','underscore','backbone','marionette'],
function ($,_,Backbone,Marionette) {
"use strict";
socialApp = window.socialApp || {};
socialApp.AppRegion = Backbone.Marionette.Region({
el:'#wrapper',
initialize:function(){
console.log('from wrapper');
}
});
return socialApp.AppRegion;
});
现在我正在调用这两个函数:
socialApp.Layout = new appLayout(); //calling layout
socialApp.AppContainer = new appContainer; //calling container
socialApp.AppContainer.show(socialApp.Layout); //i am showing to container
但我收到的错误是:
Uncaught NoElError: An "el" must be specified for a region.
如何解决这个问题?这有什么不对,请问任何一个人好吗?
以下是我的控制器以获取更多信息
define([
'jquery',
'underscore',
'backbone',
'marionette',
'./model/loginModel',
'./views/loginView'
],function ($,_,Backbone,Marionette,loginModel,loginView) {
"use strict";
socialApp = window.socialApp || {};
socialApp.loginController = Marionette.Controller.extend({
_initialize:function(){
console.log('initi')
this.loginView = new loginView({model:new loginModel}).render().el;
console.log(this.layout.header.show(this.loginView));
}
});
return socialApp.loginController;
});
提前致谢。
答案 0 :(得分:1)
我正在尝试关注并理解您的代码,但这真的很难。如果您可以修复缩进,并且可能重新排序并删除所有不相关的样板代码,这将有所帮助。
无论如何,我建议你使用Marionette.Application
,你可以直接附加区域,而不是你正在创建的这个容器:
var SocialApp = new Marionette.Application;
SocialApp.addRegions({ root: '#wrapper' });
然后,您将创建AppLayout
视图,并将其附加到应用的根区域:
SocialApp.root.show(new AppLayout)