ajax分页控件(旧) - smallp/front-suit GitHub Wiki

ajax分页控件

使用说明

使用ajax获取数据,渲染到页面中。适用于后台数据分页展现,可以渲染到table、li等多种标签中,有很强的灵活性。尤其适用于筛选项多的情况。

在id等符合规范的情况下,一句Pager.init();即可完成所有工作。详情请参阅参数说明

服务器端返回的数据结构为{"total":1,"data":[]}。其中totol为总页码数,data为数据数组。在不需要分页的场合,也可以直接返回data,即[]

DEMO

<table>
    <thead>
    <tr>
        <th>序号</th>
        <th>ID</th>
        <th>手机号</th>
        <th>昵称</th>
    </tr>
    </thead>
    <tbody id="data">
    </tbody>
</table>

对应的模板可以为:

<template id="item">
<tr>
    <td>{index}</td>
    <td>{id}</td>
    <td>{phone}</td>
    <td>{name}</td>
</tr>
</template>

如果要兼容旧版浏览器,那么建议使用下面的方法:

<script id="item" type="text/template">
<tr>
    <td>{index}</td>
    <td>{id}</td>
    <td>{phone}</td>
    <td>{name}</td>
</tr>
</script>

初始化如下:

$(function(){
	param={
		tpl:$('#item').html(),
		target:'data',
		fun:function(data){
			for(x in data){
				data[x].index=x+1;
			}
			return data;
		}
	}
	Pager.init(param);
});

其中fun是一个函数,函数返回处理完成之后的数据。

实例中添加了序号一栏,那么在模板字符串中指定index的位置,在fun中给数据添加上index属性即可。所以添加、修改字段等都可以通过此方法来实现,解决此控件模板没有控制功能的缺陷。(**这是由于此控件没有依赖模板引擎所引起的。**相对引入模板引擎所带来的开销,这种方式更为干净一些,而且大多数情况下都可以轻松解决问题,少数情况通过hack的方法也能解决。故而没有采用模板引擎。)

详情请参见参数说明。

参数说明

  • url:数据获取的路径,默认为当前路径。
  • tpl:模板字符串。默认情况下会读取ID为item的标签下的内容。建议将模板内容放在<template>标签中(此为HTML5标签,只适用于现代浏览器)。如要考虑兼容性请使用<script type="text/template">。渲染数据请使用大括号,如服务器端传的单条数据为{"id":1,"name":"hello"},那么模板字符串为<tr><td>{id}</td><td>{name}</td></tr>,则最后渲染出来的字符串为<tr><td>1</td><td>hello</td></tr>
  • target:容纳数据的容器ID。默认取tbody标签,如果有多个table或使用其他标签容纳数据,请使用此参数。
  • fun:渲染数据前的处理函数。默认为null。由于没有使用模板引擎,所以不支持在模板内进行判断,需要在此函数中对数据进行处理。处理完成后需要将数据return出来,交给控件渲染数据。

函数列表

  • reload:(reset:bool) reset是可选参数,如果reset为true,会直接跳转到第一页。在筛选项有改动的情况下,建议使用此参数。否则为单纯刷新数据。
  • next:() 下一页
  • pre:() 上一页
  • addParam:(key:string,value:any) 添加请求参数,不会自动刷新数据。
  • delParam:(key:string) 删除请求参数,不会自动刷新数据。
  • getRow:(key:string,value:any) 根据唯一键值对搜索数据。如请求回来的数据有{"id":1,"name":"hello"},那么PAGER.getRow('id',1)可以返回此条数据。 注:目前只能返回唯一数据,不支持返回多条数据
⚠️ **GitHub.com Fallback** ⚠️