我有一个使用外部API填充的集合,API返回了许多对象+其他对象的分页详细信息,然后我想在我的视图中只显示这些对象的子集,但允许进一步分页视图
更好地解释我的情况:
你的解决方案是什么? 我找到Backbone.Paginator,但我不知道它与Marionette的集成程度如何,或者是否已经存在 Backbone.Marionette.Paginator 扩展名:)
答案 0 :(得分:8)
Backbone.Paginator在Backbone集合之上提供扩展和其他方法和功能,这意味着它们应该可以从任何类型的Backbone视图中使用,包括Marionette。
那么你不应该做任何特别的事情来整合Marionette和Paginator。您将构建一个利用其他方法和功能的视图,但您可以将该视图基于Marionette的视图而不是标准的Backbone视图。在这种情况下,我建议使用Marionette的集合视图或复合视图,分别从分页集合中呈现每个项目。
答案 1 :(得分:4)
以下是我如何解决整合Marionette和backbone.paginator的问题。从某种意义上来说它是“直截了当”的,但是作为backbone.marionette的新成员,它让我烦恼了一段时间!我希望这对某人有用。
使用compositeView上的serializeData方法从paginator的paginator_ui对象中呈现信息。
/* a view for presenting a backbone.paginator collection,
* and for presenting and handling its pagination UI element */
App.module('Views', function(Views, App, Backbone, Marionette, $, _) {
Views.PaginatedCollectionView = Backbone.Marionette.CompositeView.extend({
template: 'backbone/templates/paginated_collection_view',
itemView: App.Views.StructureView,
/* I'm not using a model, but you could if you
* wanted? You might even merge the two */
serializeData: function(){
if (this.model){
data = this.model.toJSON();
} else {
// we want to render the paginator_ui in our templates
data = this.collection.paginator_ui;
}
return data;
}
});
});