8

外部 API を使用して入力されたコレクションがあり、API は多数のオブジェクト + ページングの詳細をさらにオブジェクトに返します。次に、おそらくこれらのオブジェクトのサブセットのみをビューに表示したいと思いますが、さらにページ分割されたビューを許可しますそれも

私の状況をもう少しよく説明するには:

  1. サーバーから 20 件の結果を取得し、以降のページのページネーション データを取得します
  2. 10 件の結果を表示 + その他のボタン
  3. さらにクリックすると、10件の結果とその他のボタンが表示されます
  4. さらにクリックすると、サーバーから 20 件の結果が取得され、10 件の結果と [その他] ボタンが表示されます ...

あなたの解決策は何ですか?Backbone.Paginatorを見つけましたが、マリオネットとどの程度うまく統合されているか、またはBackbone.Marionette.Paginator拡張機能が既に存在するかどうかはわかりません:)

4

2 に答える 2

8

Backbone.Paginator は、Backbone コレクションの上に拡張機能と追加のメソッドと機能を提供します。つまり、Marionette を含むあらゆる種類の Backbone ビューから使用できる必要があります。

Marionette と Paginator を統合するために特別なことをする必要はありません。追加のメソッドと機能を利用するビューを作成しますが、標準のバックボーン ビューではなく、マリオネットのビューに基づいてそのビューを作成します。この場合、コレクション ビューまたは Marionette の複合ビューのいずれかをお勧めし、ページ コレクションの各アイテムを個別にレンダリングします。

于 2012-07-17T13:54:27.247 に答える
4

Marionette と backbone.paginator の統合の問題をどのように解決したかを次に示します。それはある意味では「簡単」でしたが、backbone.marionette の初心者として、しばらくの間私を悩ませました! これが誰かに役立つことを願っています。

ページネーターの paginator_ui オブジェクトから情報をレンダリングするには、compositeView で serializeData メソッドを使用します。

/* 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;
        }
    });
});
于 2013-10-07T10:15:23.283 に答える