一个简单而简短的问题:如果视图包含两个或更多子视图。视图容器应该是布局视图吗?
如果没有,有什么好的选择?
更新
我的代码:
var LikeButtonModal = Backbone.Model.extend({
url: 'api/profile/like/'
});
var LikeButton = Backbone.Marionette.ItemView.extend({
tagName: 'button',
className: 'like',
template: '<div>like</div>',
events: {
'click' : 'like'
},
initialize: function(userId){
this.model = new LikeButtonModal();
},
like: function(){
this.model.save();
}
})
var LeftProfileView = Backbone.Marionette.Layout.extend({
template: '#profile-left',
regions:{
extra : '.extra'
},
initialize: function(){
this.on("item:rendered", this.editable, this);
},
onRender: function(){
if(this.model.get('userid') != ActiveUser.get('userid')){
this.extra.show(new LikeButton(this.model.get('userid')));
}
}
});
答案 0 :(得分:4)
如果你要在不同的时间更换子视图,或者子视图的类型非常不同,那么布局对此有好处...例如,布局可能包含您的标题,导航和主要内容区域。
其他选项包括CollectionViews和CompositeViews。
集合视图将呈现项目集合,对集合中的每个项目使用相同类型的视图。这适用于事物清单。
CompositeViews是CollectionViews,可以在集合周围呈现包装器模板。例如,HTML表结构。可以在CompositeView的包装器模板中呈现table
,thead
,tbody
和tfooter
标记,然后可以将一组项呈现到{{1} } tag。
这也可能会对这个问题有所了解:https://github.com/derickbailey/backbone.marionette/wiki/Use-cases-for-the-different-views