为了实现内容丰富的分页页面,这里采用了jqpaginator和artTemplate结合的方式实现了自定义分页。
前期准备
jqpaginator简介
基本使用
1
| <div id="paginator" ></div>
|
1 2 3 4 5 6 7 8 9
| $('#paginator').jqPaginator({ totalPages: 100, visiblePages: 10, currentPage: 1, onPageChange: function (num, type) { $('#text').html('当前第' + num + '页'); } });
|
paginator与页面上对应的存放分页内容的标签的id相一致
扩展方法
jqPaginator提供了两个扩展方法,方便初始化后对组件进行操作。
1 2 3
| $('#id').jqPaginator('option', { currentPage: 1 });
|
销毁jqPaginator
1
| $('#id').jqPaginator('destroy');
|
artTemplate简介
这里为了使页面内容更加灵活,实现方式更加简单,采用了artTemplate。下面简单介绍一下artTemplate的用法。详情可参见artTemplate官网
编写模板
使用一个type=”text/html”的script标签存放模板:
1 2 3 4 5 6 7 8
| <script id="test" type="text/html"> <h1>{{title}}</h1> <ul> {{each list as value i}} <li>索引 {{i + 1}} :{{value}}</li> {{/each}} </ul> </script>
|
渲染模板
1 2 3 4 5 6
| var data = { title: '标签', list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'] }; var html = template('test', data); document.getElementById('content').innerHTML = html;
|
具体示例
引入相关文件
- 首先下载对应的jqpaginator.js 以及artTemplate.js。
- 然后再对应的页面中引入:
1 2 3 4 5 6 7 8
| <%--分页插件--%> <script type='text/javascript' src="${appPath}/plugins/jqPaginator/dist/jqpaginator.min.js"> </script> <%--模板页面--%> <script type='text/javascript' src="${appPath}/common/olt/js/template.js"> </script>
|
编写页面
- 首页需要编写页面的内容,这里需要进行分页显示的内容采用artTemplate的方式实现。
1 2 3 4 5 6 7 8 9 10 11 12
| <div id="fpap0010_wrapper" class="tz-gallery" > <div class="row"> <div id="courseListHtml"></div> </div> </div>
<footer> <div class="dataTables_paginate paging_simple_numbers" id="fcoz0060pages" style="display: "> <ul class="pagination" id="pagination1"></ul> </div> </footer>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <script id="coursesTemaple" type="text/html"> {{if courseList}} {{each courseList as value }} <div class="col-xs-3 col-md-3" > <div class="thumbnail"> {{if value.photoPath}} <div class="lightbox"> <img alt="文件" src="${appPath}/files/olt/{{value.photoPath}}" onclick="findTask1('{{value.courseId}}');" style="width: 100%; height: 140px; cursor: pointer;" /> </div> {{else if (!value.photoPath)}} <div class="lightbox"> <img alt="文件" src="${appPath}/common/olt/images/default.jpg" onclick="findTask1('{{value.courseId}}');" style="width: 100%; height: 140px; cursor: pointer;" /> </div> {{/if}} <div class="caption"> {{if (!value.countPeople)}} <p>{{value.courseName}} (0人在学)<p> {{else if (value.countPeople)}} <p>{{value.courseName}} ({{value.countPeople}}人在学)<p> {{/if}} {{if (!value.courseNum)}} <div class="progress progress-striped active tz-progress-bar"> <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"> </div> </div> {{else if (value.courseNum)}} <div class="progress progress-striped active tz-progress-bar" > <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: {{value.courseNum}}%;"> <span class="tz-progress-span"> {{value.courseNum}}% </span> </div> </div> {{/if}} </div> </div> </div> {{/each}} {{else if !courseList}} 没有数据 {{/if}} </script>
|
编写对应JS
分页初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var total; $.jqPaginator( '#pagination1', { totalPages : 1, visiblePages : 10, currentPage : 1, prev : '<li class="prev"><a href="javascript:;">上页</a></li>', next : '<li class="next"><a href="javascript:;">下页</a></li>', page : '<li class="page"><a href="javascript:;">{{page}}</a></li>', onPageChange : function(num, type) { getCouserListData(num); } });
|
请求课程数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function getCouserListData(page) { $.ajax( { data : {page:page}, url : '${appPath}/olt/coz/fcoz0060_query.st?wtpage='+wtpage, type : 'POST', success : function(data) { data = JSON.parse(data.resultStr); total = Math.ceil(data.recordCount / data.pageSize); $('#pagination1').jqPaginator('option', { totalPages:total }); courseList = data.list; showCourseListData(courseList); } }); }
|
选模板
1 2 3 4 5 6 7 8 9 10 11
|
function showCourseListData(courseList) { var courseListData = { courseList: courseList } var html = template('coursesTemaple', courseListData); document.getElementById('courseListHtml').innerHTML = html; }
|
结果展示