我正在研究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。
答案 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});