嵌套视图应该是布局视图吗?

问题描述:

一个简单而简短的问题:如果一个视图包含两个或多个子视图。视图容器应该是布局视图吗?嵌套视图应该是布局视图吗?

如果没有,有什么好的替代方案?

更新:

我的代码:

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'))); 
     } 
    } 
}); 

布局有利于这一点,如果你会在不同的时间更换副意见,或者如果子视图是非常不同的类型.. 。例如,一个布局可能包含您的标题,导航和主要内容区域。

其他选项是CollectionViews和CompositeViews。

集合视图将呈现项目集合,对集合中的每个项目使用相同类型的视图。这适用于列表的东西。

CompositeViews是CollectionView,可以在集合周围呈现包装模板。例如,一个HTML表格结构。 table,thead,tbodytfooter标签可以在CompositeView的包装模板中呈现,然后可以将一组项目渲染到tbody标签中。

这可能摆脱多一点光关于这个问题,太:https://github.com/derickbailey/backbone.marionette/wiki/Use-cases-for-the-different-views

+0

我不是在这种情况下更换子视图。我只是有一个按钮的菜单,我给了一个单独的区域,因为它有它自己的模型和一些逻辑。用于此目的是否是错误的?我已阅读所有文档,但我不知道如何处理包含逻辑的静态子视图。 – Boedy 2012-08-16 20:25:05

+0

布局会适合那种情况 – 2012-08-16 20:25:54

+0

我已更新我的帖子并添加了一些代码。这是应该如何完成的?或者你认为有更好的方法吗? – Boedy 2012-08-16 20:28:55