Parse.com:如何从Parse.Query中分页结果?

Hen*_*ren 12 javascript pagination backbone.js underscore.js parse-platform

目前,我使用Javascript Parse.Object.extend查询结果,并将这些结果模板化为带有underscoreJS的列表.

以下是查询Parse对象并将对象添加到Underscore模板的代码.

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是Underscore模板.

<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>
Run Code Online (Sandbox Code Playgroud)

但是,我不明白如何在Parse和Underscore中对结果进行分页.

我已经尝试了骨干分页器,但我对Backbone并不是很好,我只是不明白如何将它与Parse查询结合起来.

如果我必须使用另一个模板解决方案,或骨干分页器之外的其他分页解决方案,它也没关系.任何事都会有所帮助,我对这个分页很感兴趣.

编辑:

Parse.com有skip()和limit(),不知怎的,据说这很有用,但我不知道如何实现它.

jmk*_*142 30

这里只是一个抽象的分页示例.应该说明这个概念,你可以调整它以适应你的具体情况.

// 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()...
Run Code Online (Sandbox Code Playgroud)

因此,您的链接可以以某种方式在其中编码页面数据,因为当您单击它时,您的函数将知道要跳转到哪个页面并获取相应的页面.next/prev的概念是相同的.在接下来你只需要做一个page++和上一个你可以做一个page--.

希望这可以帮助.

编辑:

如果你想做一些事情,比如显示237中的分配51-100,你需要做一个.count()事先得到记录总数.

要得到起始编号,它就像是(page * displayLimit) + 1 要获得结束编号,请记住,如果您在最后一页上,则可能没有完整的50条记录或者您的displayLimit.

  • 在上面的示例中,paging ++不考虑正在创建的新记录.因为它正在下降,所以说有50条新消息进入.Page 2将跳过50条新消息并生成第一页上显示的相同的50条消息.这不一定是错的,因为第1页应该是50条最新消息.在聊天中,你可能对旧的兴趣不大,对新的兴趣更大.跟踪已获取的最新消息的时间戳.然后,获取最新信息的查询将按降序查找大于上一个时间戳的所有消息,并将其添加到前面. (3认同)