简体   繁体   English

在理解使用javascript分页加载数据的概念时出现问题

[英]issue in understanding concept of loading data in pagination with javascript

I have lots of data and I want to make a pagination so I am able to load 5 items per page and I want to have 10 pages. 我有很多数据,我想进行分页,因此每页可以加载5个项目,而我希望有10页。 I am trying to get inspired by http://addyosmani.com/blog/backbone-paginator-new-pagination-components-for-backbone-js/ 我正试图从http://addyosmani.com/blog/backbone-paginator-new-pagination-components-for-backbone-js/获得灵感

<ul class="pagination" id="paginationSelect">



            <% for(var i = 0; i < 10 ; i++){ %>
                <% if(i === 0){ %>
                    <li><a id="a-page-item"  class="page">Previous</a></li>

                <% } else if(i > 0 && i < 10 - 1){ %>
                    <li><a id="a-page-item"  class="page"> <%= i %> </a></li>
                <% } %>
            <% } %>

        <li class="arrow"><a href="">Next</a></li>
      </ul>

( http://jsfiddle.net/LQg7W/2151/ this jsfiddle is without css of course) My problem is that when I click on each of the pages (from 1 to 10 ) it loads data from 1 to 5 ( and all of them are the same ) but how can I have 5 data on first page, next 5 data on the second page and so on. http://jsfiddle.net/LQg7W/2151/这个jsfiddle当然是没有CSS的)我的问题是,当我单击每个页面(从1到10)时,它会加载1到5的数据(以及所有它们是相同的),但是我如何在第一页上有5个数据,在第二页上有下5个数据,依此类推。

event : {

"click #paginationSelect" : "fetchSelectedData"
}

onPageClick : function() {

            console.log("you clickedddd");

            this.collection.setPagination(1, 5);
            this.collection.setNrPages(5);

            this.collection.reset();
            this.$("#listMessages").empty(); //listMessage is a placeholder for showing data
            this.collection.fetch();
        },

Backbone.Paginator provides implementation of two main pagination approaches - server side paging ( Backbone.Paginator.requestPager ) and client side paging ( Backbone.Paginator.clientPager ). Backbone.Paginator提供了两种主要的分页方法的实现-服务器端分页( Backbone.Paginator.requestPager )和客户端分页( Backbone.Paginator.clientPager )。

It's not clear which one do you use, so could you please provide source code for your collection ? 您使用的是哪一个尚不清楚,所以请您提供您收藏的源代码吗?

As for HTML template I'd propose you to change it to something like this: 至于HTML模板,我建议您将其更改为以下形式:

<ul class="pagination" id="paginationSelect">

        <li><a id="previous-page" class="page">Previous</a></li>

        <% for(var i = 0; i < 10 ; i++) { %>
                <li><a id="page" class="page"><%= i %></a></li>
        <% } %>

        <li><a id="next-page" class="page">Next</a></li>
  </ul>

and update event handlers to be (in case you use requestPager ): 并将事件处理程序更新为(如果使用requestPager ):

event : {"click #previous-page" : "previousPage",
         "click #next-page" : "nextPage",
         "click #page" : "page"},

previousPage : function(e) {
  this.collection.requestPreviousPage();
},

nextPage : function(e) {
  this.collection.requestNextPage();
},

page : function() {
  var page = $(e.target).text();
  this.collection.goTo(page);
},

Backbone.Paginator will automatically fetch required data once you call methods like requestPreviousPage(), requestNextPage(), goTo(pageNumber) from collection. 一旦您从集合中调用诸如requestPreviousPage(),requestNextPage(),goTo(pageNumber)之类的方法,Backbone.Paginator将自动获取所需的数据。

BTW, there are quite good examples of using both Backbone.Paginator.requestPager and Backbone.Paginator.clientPager on plugin's github examples folder: Backbone.Paginator , so you might take a look at them. 顺便说一句,有关于插件的github上的例子文件夹中同时使用Backbone.Paginator.requestPagerBackbone.Paginator.clientPager的相当不错的例子: Backbone.Paginator ,所以你可能会看看他们。

Just one note: to make examples work you'd need to change URL in PaginatedCollection.js to https://api.github.com/repos/backbone-paginator/backbone.paginator/issues? 请注意:要使示例正常工作,您需要将PaginatedCollection.js中的 URL更改为https://api.github.com/repos/backbone-paginator/backbone.paginator/issues? because URL used in examples doesn't return any data. 因为示例中使用的URL不返回任何数据。 In client-paging example you'd also need to comment out server_api section in the same file, so it would work more like client-side paging. 在客户端分页示例中,您还需要注释掉同一文件中的server_api部分,因此它的工作方式类似于客户端分页。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM