2014-01-06 10 views
11

現在、JavascriptのParse.Object.extendを使用して結果を照会しており、これらの結果にアンダースコアを含むリストをテンプレートしています。Parse.com:Parse.Queryの結果を改ページする方法

ここでは、解析オブジェクトにクエリを実行し、そのオブジェクトをアンダースコアテンプレートに追加するコードを示します。

var Assignment = Parse.Object.extend("Assignments"); 
var query = new Parse.Query(Assignment); 
query.descending('updatedAt'); 

query.find({ 
    success: function(results) { 
     console.log("Success"); 
      var tableTemplate = $("#list-template").html(); 
$("#assignmentdisplay").html(_.template(tableTemplate,{results:results})); 

    }, 
    error: function(error) { 
     alert("Error: " + error.code + " " + error.message); 
    } 
}); 

これはアンダースコアテンプレートです。

<script type="text/html" id='list-template'> 
       <% _.each(results,function(result){ %> 
      <li id="list-group-item"> 
     <h4 class="list-group-item-heading"><%= result.get("Title") %></h4> 
        <p class="list-group-item-text"><%= result.get("Content") %></p> 
        <p class="list-group-item-text"><%= result.get("Categories") %></p> 
        </li> 
    <% }) %> 

</script> 

しかし、ParseとUnderscoreで結果を改ページする方法はわかりません。

私はbackbone paginatorを試しましたが、私はバックボーンにはあまり役に立ちません。Parseクエリと組み合わせる方法はわかりません。

私は別のテンプレートソリューション、またはバックボーン改行ツール以外のページングソリューションを使用する必要がある場合は、それも問題ありません。何かが助けになるでしょう、私はこのページネーションにかなり悩まされています。

EDIT:

Parse.comをスキップしている()とlimit()は、何とかこれは有用であると言われているが、私はそれを実装する方法がわかりません。

+0

クエリでページを作成しようとしているのですか、単一のクエリを複数のページに分割しようとしていますか? – Fosco

+0

複数のページで問題ありません。しかし、私はページネーションの経験がないので、どちらかのものから始めるところがありません。 –

+0

ここでの回答で「スキップ」、「制限」を使用する:http://stackoverflow.com/questions/20006550/parse-com-query-by-highest-values/20014322#20014322 –

答えて

26

ここでは、ページネーションの抽象的な例を示します。概念を説明し、特定の状況に合わせて調整することができます。

// Set the current page number usually zero works great to start 
// This is an arbitrary ex. but this value will come from your page (e.g. link etc.) 
var page = 0; 

// How much you want on a page 
var displayLimit = 50; 

// Get the count on a collection 
var count; 
myCollection.count().then(function(result){ count = result; }); 

// Your query 
var Assignment = Parse.Object.extend("Assignments"); 
var query = new Parse.Query(Assignment); 
query.descending('updatedAt'); 
query.limit(displayLimit); 
query.skip(page * displayLimit); 
// So with this above code, on page 0, you will get 50 results and skip 0 records. 
// If your page var is 1, you'll skip the first 50 and get 50 results starting at 51 
// So on so forth... 
query.find()... 

だからあなたのリンクは、あなたがそれをクリックすることで何とかそれで符号化されたページデータを持つことができ、あなたの関数は、にジャンプし、適切なものをつかむためにどのようなページを知っているだろう。この概念はnext/prevでも同じです。次に、page++を実行し、先にpage--を実行します。

これが役に立ちます。

EDIT:

あなたは237の割り当て51-100を表示するような何かをしたい場合は、手の前にレコードの合計数を取得するために.count()を行う必要があると思います。

開始番号を取得するには、単に(page * displayLimit) + 1 のようにしてください。最後のページにいる場合、displayLimitが50個のレコードすべてを保持していない可能性があります。

+0

あなたの作品に感謝します;) –

+0

Parse.comでは、これが現在どの程度役立っているかわかりませんが、まあ、概念は一般にすべてのDBページ分割タスクで同じです。 Heh。 – jmk2142

+0

私はパースについて聞いたことがありますが、このロジックはすべてのDBで同じです。私は、新しいメッセージが来たら、このロジックが動作するはずですチャットmsgsを表示する配列に追加する他の50レコードを読み込んだ後にそれを聞いてみたいですか? –

関連する問題