page.html 3.0 KB

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