1

我正在研究无限分页(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。

4

1 回答 1

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});
于 2013-07-25T23:10:13.367 回答