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

时间:2012-08-16 19:27:21

标签: marionette

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

如果没有,有什么好的选择?

更新

我的代码:

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

1 个答案:

答案 0 :(得分:4)

如果你要在不同的时间更换子视图,或者子视图的类型非常不同,那么布局对此有好处...例如,布局可能包含您的标题,导航和主要内容区域。

其他选项包括CollectionViews和CompositeViews。

集合视图将呈现项目集合,对集合中的每个项目使用相同类型的视图。这适用于事物清单。

CompositeViews是CollectionViews,可以在集合周围呈现包装器模板。例如,HTML表结构。可以在CompositeView的包装器模板中呈现tabletheadtbodytfooter标记,然后可以将一组项呈现到{{1} } tag。

这也可能会对这个问题有所了解:https://github.com/derickbailey/backbone.marionette/wiki/Use-cases-for-the-different-views