0

我正在跟上 Backbone 和 Marionette 的速度,但遇到了障碍。基本上,我从用于集合的 API 获得的结果集被“包装”在分页数据中,如下所示:

{PageSize:10,PageIndex:0,TotalItems:100,Items:[...]}

所以本质上真正的集合是Items:[]数组。我知道我可以从结果中使用这个集合,但我需要视图/寻呼机 UI 的分页数据。

我已经尝试了几件事,我现在的主要解决方案是像这样扩展现有的集合

PagedCollection = Backbone.Collection.extend(
    {        
    pageSize: 0,
    pageIndex: 0,
    totalItems: 0,
    parse:function(data) {
        this.pageSize = data.PageSize;
        this.pageIndex = data.PageIndex;
        this.totalItems = data.TotalItems;
        return data.Items;
    }
});

然后在我的复合视图中,我将分页信息提取到模型属性中,以便我可以访问模板中的分页信息(这是主要问题):

var LogView = Backbone.Marionette.CompositeView.extend({
    initialize:function() {
        this.model = new Backbone.Model({pageSize:this.collection.pageSize,pageIndex:this.collection.pageIndex,totalItems:this.collection.totalItems});
    },
    template: "#log-view",
    itemView: LogRowView,
    itemViewContainer: "tbody"
 });

我的问题是这是正确/好的方法,还是我错过了 Backbone 或 Marionette 内置的一些简单的东西?

任何帮助表示赞赏!

4

1 回答 1

1

不,Backbone 不会像这样优雅地处理分层集合/模型信息。你所拥有的几乎正是我会怎么做的。

于 2013-09-29T22:35:17.633 回答