0

こんにちは、万能コミュニティです。

backbone-pageable と一緒に bbGrid を使用しようとしています。page と per_page をサーバーに送信できるという意味でページングを機能させることができ、bbGrid は正しい数のアイテムとページ番号を表示します。しかし、コレクションが正しい長さの値を返さないため、グリッドでページングを機能させることができません。

ここに私のコレクションがあります:

define([ 
    'backbone-pageable',
    'models/DeliveryModel' 
], function(BackbonePageable, DeliveryModel) {

    var DeliveryCollection = Backbone.PageableCollection.extend({

        model : DeliveryModel,

        url : '/UIServices/rs/material/v1/deliveries',

        // Parse server response to handle total number of items
        parseState: function (resp, queryParams, state, options) {
            return {totalRecords : parseInt(options.xhr.getResponseHeader("X-Result-Counter"))};
        }
    });

    return DeliveryCollection;
});

collection.length が X-Result-Counter の値を返すことを期待していますが、常に per_page の値を返します。私は何を逃したのですか?

4

2 に答える 2

2

collection.lengthコレクションに含まれるモデルの長さを返します。この場合、per_page現在のページのモデルのみがコレクションに格納されるため、これは長さです。

全長を取得したい場合は、 を使用する必要がありますcollection.state.totalRecords

于 2013-10-11T13:56:50.590 に答える
0

いろいろ調べた結果、bbGrid と backbone-pageable の組み合わせはお勧めできないという結論に達しました。おそらく bbGrid をハックしてサーバー側のページングで動作させることができますが、より良い解決策はグリッドの実装を変更することです。

bbGrid とほとんど同じように機能する Backgrid に切り替えることにしました。ヘッダー列用の独自の検索ボックスと、ページごとの項目数を選択するための独自のセレクターを作成する必要がありましたが、それはほんの数行のコードでした。

したがって、私の推奨事項は次のとおりです。サーバー側のページネーション、並べ替え、検索が必要な場合。bbGrid の前に Backgrid を選択してください!

于 2013-10-23T12:30:23.383 に答える