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"
 });

私の質問は、これは正しい/大丈夫なアプローチですか、それともバックボーンまたはマリオネットに組み込まれている単純なものが欠けていますか?

どんな助けでも大歓迎です!

4

1 に答える 1

1

いいえ、バックボーンはこのような階層コレクション/モデル情報を適切に処理しません。あなたが持っているものは、私がやりたいこととほとんど同じです。

于 2013-09-29T22:35:17.633 に答える