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

时间:2014-01-06 13:02:50

标签: javascript backbone.js pagination underscore.js parse-platform

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

以下是查询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);
    }
});

这是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>

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

我已经尝试了backbone paginator,但我对Backbone不太满意,我只是不明白如何将它与Parse查询结合起来。

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

修改

Parse.com有skip()和limit(),不知何故这被认为是有用的,但我不知道如何实现它。

1 个答案:

答案 0 :(得分:29)

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

// 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--

希望这有帮助。

编辑:

如果您想要执行类似于显示237的分配51-100的操作,则需要先执行.count()以获取记录总数。

要获取起始编号,只需(page * displayLimit) + 1 要获得结束号,请记住,如果您在最后一页,您可能没有完整的50条记录或displayLimit。