Backbone.Marionette和Backbone.Paginator。 CompositeView重新渲染

时间:2013-07-25 09:57:22

标签: marionette paginator

我正在研究Infinite Pagination (http://addyosmani.github.io/backbone.paginator/examples/infinite-paging/index.html

我正在使用CompositeView进行分页视图。

我遇到了以下问题。每次获取新数据后,Paginator的集合都会删除旧数据并添加新数据,这样就可以使CompositeView重新渲染并删除旧结果。

如何解决此问题?我正在考虑禁用重新呈现功能,但应该如何正确完成?

提前致谢!

var BaseFeedChronoCompositeView = Backbone.Marionette.CompositeView.extend({
    tagName: "div",
    template: _.template(ChronoFeedComposite_html),
    itemView: Article,                
    events: {
        'click #loadmore-button-manual': function (e) {
            e.preventDefault();
            this.collection.requestNextPage();
    },

    appendHtml: function (collectionView, itemView, index) {
        collectionView.$("#chronoFeed-content").append(itemView.$el);
    }
});

这是基本代码。 this.collection.requestNextPage() - 将数据请求发送到服务器。获取数据后,this.collection将删除旧模型并添加新模型。

Composite View正在侦听这些事件,并删除旧模型的itemViews,并为新模型附加itemViews。

我需要CompositeView不要删除旧的itemViews。

1 个答案:

答案 0 :(得分:0)

我不太确定这个分页器是如何工作的,因为我从未使用它。但我认为解决此问题的最简单方法是确保您的Collection不会删除旧模型。我假设当你的数据被返回时,它正在对集合进行set。如果查看主干文档,您可以看到可以禁用此方法来删除模型http://backbonejs.org/#Collection-set

  

如果您想自定义行为,可以使用它来禁用它   选项:{add:false}, {remove:false} 或{merge:false}。

因此,当您更新集合时,而不是仅仅调用

myCollection.set([o1,o2,o3]);

你应该做的

myCollection.set([o1,o2,o3], {remove:false});
相关问题