如何覆盖CompositeView渲染方法?

时间:2013-09-13 14:08:18

标签: javascript backbone.js marionette

我只需渲染fetched collection的第一个元素。

ItemView = Backbone.Marionette.ItemView.extend({
    template:  "#item"
});

ItemsEmptyView = Backbone.Marionette.ItemView.extend({
    template: "#items_empty"
});

ItemsView = Backbone.Marionette.CompositeView.extend({
    template: "#items",
    itemView: ItemView,
    emptyView: ItemEmptyView
});

我怎样才能做到这一点?我试图覆盖render()方法,或者onBeforeRender()没有任何帮助。

2 个答案:

答案 0 :(得分:3)

如果您确实需要这样做,请使用appendHtml()

appendHtml: function(collectionView, itemView, index){
    if ( index === 0 )
        collectionView.$el.append(itemView.el);
}

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#compositeviews-appendhtml

答案 1 :(得分:1)

最简单的方法是创建一个仅包含第一个模型的新集合实例,并将其传递给复合视图。当然,这是假设您不能简单地使用项目视图。