page.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <nav aria-label="...">
  2. <ul class="pagination" id="pages"></ul>
  3. </nav>
  4. <script type="text/javascript" src="/lib/bootstrap/bootstrap-paginator.js"></script>
  5. <script type="text/javascript">
  6. let options = {
  7. bootstrapMajorVersion: 3,
  8. currentPage: "<%= pages.current %>",
  9. totalPages: "<%= pages.total %>",
  10. size: "normal",
  11. itemContainerClass: function(type, page, current) {
  12. let className = 'page-item';
  13. this.currentPage = parseInt(this.currentPage);
  14. this.totalPages = parseInt(this.totalPages);
  15. switch (type) {
  16. case "prev":
  17. className = this.currentPage === 1 ? className + ' disabled' : className;
  18. break;
  19. case "next":
  20. className = this.currentPage === this.totalPages ? className + ' disabled' : className;
  21. break;
  22. case "page":
  23. className = page === this.currentPage ? className + ' active' : className;
  24. break;
  25. }
  26. return className;
  27. },
  28. itemContentClass: function(type, page, current) {
  29. return 'page-link';
  30. },
  31. itemTexts: function(type, page, current) {
  32. switch (type) {
  33. case "first":
  34. return "&laquo;";
  35. case "prev":
  36. return "上一页";
  37. case "next":
  38. return "下一页";
  39. case "last":
  40. return "最后一页";
  41. case "page":
  42. return page;
  43. }
  44. },
  45. shouldShowPage: function (type, page, current) {
  46. let result = true;
  47. switch (type) {
  48. case "first":
  49. result = (current !== 1);
  50. break;
  51. case "prev":
  52. break;
  53. case "next":
  54. break;
  55. case "last":
  56. result = false;
  57. break;
  58. case "page":
  59. result = true;
  60. break;
  61. }
  62. return result;
  63. },
  64. pageUrl: function(type, page, current){
  65. let queryData = JSON.parse('<%- pages.queryData %>');
  66. // 如果没有附带查询条件则直接返回
  67. if (Object.keys(queryData).length <= 0) {
  68. return "?page=" + page;
  69. }
  70. // 有其它数据则重新赋值page,然后组合字符串
  71. queryData.page = page;
  72. let queryArray = [];
  73. for(let tmp in queryData) {
  74. let tempString = tmp + '=' + queryData[tmp];
  75. queryArray.push(tempString);
  76. }
  77. let firstQuery = queryArray.shift();
  78. let queryString = queryArray.join('&');
  79. return queryString === '' ? '?' + firstQuery : '?' + firstQuery + '&' + queryString;
  80. }
  81. };
  82. if (options.totalPages > 0) {
  83. $("#pages").bootstrapPaginator(options);
  84. }
  85. </script>