在我的应用中,我收到了show method问题。我的应用程序出错了。但我无法找到它。
如果我这样做,我的视图正确渲染(但这是错误的方法):
regions:{
header:'header',
content:'section',
footer:'footer'
},
initialize:function(){
console.log('initialized by layout')
},
renderRegions:function(options){
this.formData = _.defaults(options || {}, requireViews);
if(this.formData.headerView){ //this is true.
this.headerView();
this.renderHeaderView();
}
},
headerView:function(){
this.appHeaderView = new AppHeaderView({model:this.model});
return this.appHeaderView;
},
renderHeaderView:function(){
$(this.header.el).html(this.appHeaderView.render().el) //working fine
//but this is not workig: this.header.show(this.appHeaderView)..why not working?
}
为什么我使用" this.header.show" - 没有任何内容附加到标题。
任何人都会强调我在这里做错了什么?
我简化了我的整个过程,并在Jsfiddle中添加了以下链接:
答案 0 :(得分:2)
您的代码中存在一些问题:
model
需要实例化,而不仅仅是模型类。ItemView
的渲染方法。show
只能在Layout
已经在DOM中之后调用。以下是解决问题的主要方法:
var Controller = Backbone.Marionette.Controller.extend({
initialize:function(){
this.layout = new Layout;
$('#wrapper').html(this.layout.render().el);
this.layout.renderRegions();
}
});
另一个选项(以及我经常做的事情)是使用布局的onShow
方法渲染区域。