4

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

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

更新:

我的代码:

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

1 回答 1

4

如果您将在不同时间替换子视图,或者子视图的类型非常不同,则布局对此很有用……例如,布局可能包含您的标题、导航和主要内容区域。

其他选项是 CollectionViews 和 CompositeViews。

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

CompositeViews 是可以在集合周围呈现包装器模板的 CollectionViews。例如,一个 HTML 表格结构。、和标签可以在 CompositeView 的包装模板中呈现,然后可以将一组项目呈现到table标签中。theadtbodytfootertbody

这也可能对这个主题有更多的了解:https ://github.com/derickbailey/backbone.marionette/wiki/Use-cases-for-the-different-views

于 2012-08-16T20:19:08.317 回答