日积月累系列之分页控件(js源码)
最近开发了一款分页控件,分享给大家。
主要功能和界面介绍
cform分页控件支持服务端分页、客户端分页、数据过滤、数据排序等功能。

源码介绍
cform-pager分页控件主要由三部分组成:css、scripts以及index.html,css主要是用于控制分页和列表的样式;scripts主要是负责分页数据抓取、分页控件、本地缓存、数据过滤、数据排序等功能;index.html则涉及了分页数据模板、分页容器以及相应的过滤、排序按钮。

scripts介绍
scripts目录下面包含了cform-main、cform-utils、cform-cache以及涉及到的外围插件requirejs与jquery,下面我们分别介绍各个js的功能。
cform-main是整个分页控件的入口,负责调用分页控件cform-pager。
cform-pager提供了主要的分页控件功能。
cform-utils提供了分页控件所涉及的功能性函数。
cform-cache提供了本地分页、过滤、排序功能。
除此之外,分页控件采用了模块化开发方法,所以引入了requirejs;也使用了jquery作为功能性插件的补充。
模板介绍
cform-pager分页控件除了本身的分页功能之外,还提供了分页模板,以便开发者快速的构建分页和列表。cform-pager提供的模板是简单的模板方法,就是通过替换模板里面的关键字(通过对需要替换字段的左右两边增加##分割符来识别关键字)来实现数据的填充。
举个“栗”子:
比如我们的后台数据返回的数据格式是这样的:
{ data: [ { id:1, name: "张三", age: 27 }, { id:1, name: "李四", age: 28 }, { id:1, name: "王五", age: 29 } ] , rowsCount:3 }
而我们的列表模板是这样的
<tr>
<td>##id##</td>
<td>##name##</td>
<td>##age##</td>
</tr>
那么最终渲染出来的结果就是这样的:
<tr>
<td>1</td>
<td>张三</td>
<td>27</td>
<td>2</td>
<td>李四</td>
<td>28</td>
<td>3</td>
<td>王五</td>
<td>29</td>
</tr>
好,这是最基本的模板,当然我们可以允许你有足够的想象力去完成你手头的工作。
再举个“栗”子:
比如,现在你需要在姓名里面增加一个超链接,链接到当前人名的详情页面中去,那么这个模板怎么定义呢?
其实,我们用如下方法就可以实现:
<tr>
<td>##id##</td>
<td><a href="/user?id=##id##">##name##</a></td>
<td>##age##</td>
</tr>
看清楚了吗?是不是很简单?OK,其实我们并不需要很复杂的模板技术,利用cform-pager就可以完成很多基础的列表页面的构建。
大家想想,还有其他的功能可以扩展吗?当然有,比如,我们可以在td里面追加样式,来识别不同类型的人名;也可以通过对td绑定事件来实现业务功能。再次我就不多举栗子了~
最后,如果如果你发现无论怎么扩展当前的模板都完成不了你的工作时候,该怎么办呢?yes,没错,我们有大招在呢。
这大招究竟是什么呢?
此处省略一万行...
就是callback, 没错,就是回调函数,最终cform可以利用回调函数,把你所需的数据通过callback函数返回给你,任你处置,是不是很爽~~~
调用方法
cform-pager调用十分简单,只需要通过requiresjs引入cform-pager这个组件即可。
require.config({
paths: {
jquery: "jquery-1.7.1.min"
}
});
require(["jquery", "cform-pager"], function ($, pager) {
//调用cform-pager
var obj = new pager({ pager: "#pager", container: "#table", url: "data/product.json", pageSize: 12, useCache: true });
//过滤产品名称为Geitost的数据
$("#filter1").click(function () {
obj.filter({ filter: { ProductName: "Geitost" } });
});
//过滤产品名称为Konbu的数据
$("#filter2").click(function () {
obj.filter({ filter: { ProductName: "Konbu" } });
});
//按产品ID正序排列
$("#order1").click(function () {
obj.filter({ order: { ProductID: "asc" } });
});
//按产品ID倒序排列
$("#order2").click(function () {
obj.filter({ order: { ProductID: "desc" } });
});
});
参数说明
| 名称 | 中文 | 默认值 | 备注 | required |
|---|---|---|---|---|
| obj | 分页容器 | 对象可以为class或id | yes | |
| container | 对象容器 | 对象必需为id | yes | |
| url | 取数地址 | 必传参数,切返回值必需为json格式 | yes | |
| callback | 回调函数 | 默认回调函数通过外部模板来加载数据 | 可选参数,用于处理和呈现返回的分页数据 | no |
| pageIndex | 起始页码 | 1 | 可选参数,默认值为1 | no |
| pageSize | 分页大小 | 30 | 可选参数,默认值为30 | no |
| params | 扩展参数 | 可选参数,请求分页url的时候,会一同提交到服务器 | no | |
| align | 分页位置 | center | 可选参数,设置分页位置:left、center、right | no |
| showLoading | 是否显示loading | true | 可选参数,默认是显示loading | no |
| rowsCount | 总记录数 | -1 | 可选参数,所查询的总记录数,-1表示需要服务端生成rowsCount | no |
| useCache | 启用本地分页 | false | 可选参数,是否启用本地分页 | no |
演示与下载
欢迎访问:cform官方网站:http://www.cform.cn 演示地址:http://demo.cform.cn (用户名:001 密码123)
欢迎访问:cform开源组件:http://www.cform.cn/SinglePage?t=0103
日积月累系列之分页控件(js源码)的更多相关文章
- 日积月累系列之省市选择器(js源码)
省市选择器是大家经常用到的, 但网上找的省市选择器都不是很实用,于是自己写了移动端的省市选择器. 界面: 源码结构: 演示地址:http://component.cform.cn/city/ 演示二维 ...
- MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
返回目录 说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都 ...
- 日积月累系列之国籍控件(js源码)
一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件,navtionalit ...
- C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. .NET ...
- android弹力效果菜单、组件化项目、电影票选座控件的源码
Android精选源码 android启动扫一扫和收付款的小部件源码 android弹力效果的抽屉菜单源码 对RecyclerView Item做动画 源码 android类似QQ空间,微信朋友圈,微 ...
- 【分享】自己写的一个可空的DateTimePicker控件-附源码
最近这段时间在重构以前的一个项目,其中有一项就是要把DateTimePicker控件值可空.大家都知道的DateTimePicker值为DateTime类型,DateTime类型值不能等于Null.但 ...
- android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码
Android精选源码 灵活的ShadowView,可替代CardView使用 基于Tesseract-OCR实现自动扫描识别手机号 Android播放界面仿QQ音乐开源音乐播放器 新闻应用项目采用了 ...
- 超强封装的RichTextBox控件(C#源码)
有点类似QQ聊天框所带的RichText. 功能进行了RTF的封装,直接调用函数插入图片,连接,特列文字.具体请查看代码 ExRichTextBox_src
- [WinForm]FastColoredTextBox控件(附源码)
Fast Colored TextBox is text editor component for .NET. Allows you to create custom text editor with ...
随机推荐
- POJ3581:Sequence(后缀数组)
Description Given a sequence, {A1, A2, ..., An} which is guaranteed A1 > A2, ..., An, you are to ...
- Linux删除以破折号开头的文件Windows在批处理文件来删除隐藏属性
昨天去打印店打印的材料.结果中毒.所有的文件被隐藏.生成一个一堆快捷键.回来后.我很容易地把它放入Linux机,我想删除这些文件怪. 下面是该过程,遇到的问题. 1.您无法删除'-'该文件的开头 最初 ...
- n每个计数的概率和发生骰子--动态规划
称号:该n骰子在地板上.所有点骰子的向上一面和一个S.进入n,打印S所有可能的值的概率. 声明思想非原创!仅仅因动态规划思想的使用非常好,记下. 分析:动态规划就是分阶段考虑问题.给出变量.找出相邻阶 ...
- web 环境项目(intellj部署的tomcat) 重启时报 Exception in thread "HouseKeeper" java.lang.NullPointerException (转)
Exception in thread "HouseKeeper" java.lang.NullPointerException at org.logicalcobwebs.pro ...
- Cocos3d-x 发布第一版
从去年开始11一月,我开始一个又一个人cocos3d的C++改写版本号.现在见效.所有cocos3d的OC代码改写成了C++. 在正常Android和Windows在执行.上周,正式发布了第一个版本. ...
- 【原】谈谈promise
最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇 ...
- [WebGL入门]四,渲染准备
注意:文章翻译http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外.鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家 ...
- 具体解释首页被K后SEOer必做的三大排除方法!
近段时间.有非常多朋友向新辰抱怨说出大问题了,为神马site不到首页了,并且收录变成了0?唉,新辰不得不非常同情的告诉你:你的首页真的被K了!好了.作为一个职业SEOer.面对被K宛如已经看破红尘般没 ...
- remine chart2安装
http://blog.csdn.net/kufeiyun/article/details/9213911
- swift 笔记 (七) —— 关闭
关闭 封闭件是从包括以下各项的组.它可以在代码被发送"片"... 行,不纠结的定义.继续. swift的闭包,有点像C和Objective-C语言里的 代码块 {--} 闭包能够 ...