变脸式应用 / 分页列表框架(四)
来源:互联网 发布:淘宝食品类目有哪些 编辑:程序博客网 时间:2024/04/30 03:00
分页列表的接口适配
上面学习了易用强大的分页列表,支持分页的后端接口使用的是筋斗云的规范,返回列表像这样:
{ list: [ {field1: "val1", field2: "val2"}, {field1: "val3", field2: "val4"}, ], nextkey: 2}
上面用list字段返回列表。另外还支持一种等价的压缩表格式,使用h(表头)/d(数据)数组,如下:
{ h: [ "field1","field2" ], d: [ ["val1","val2"], ["val3","val4"], ... ] nextkey: 2}
返回列表如果没到最后一页,需要返回nextkey字段,用于请求下一页时的”_pagekey”参数。
请求通过”_pagesz”参数指定页大小,通过”_pagekey”参数取下一页。
如果你遇到的后端分页列表接口设计不符合上述规则,则需要通过接口适配来使用分页列表框架,即让返回数据符合上面的规范,一般是设置好list/nextkey字段,或者是h/d/nextkey字段。
[任务]
后端分页机制为(jquery-easyui datagrid分页机制):
- 请求时通过参数page, rows分别表示页码,页大小,如
page=1&rows=20
- 返回数据通过字段total表示总数, rows表示列表数据,如
{ total: 83, rows: [ {...}, ... ] }
要求通过接口适配,不变动前面列表页面orders2的代码,让该页面仍能正常工作。
我们先来制作一下模拟数据,在mockdata.js中,修改”Ordr.query”部分:
"Ordr.query": function (param, postParam) { var arr = orders; var ret = {total: arr.length, rows: []}; var pagesz = param.rows || 20; var pagekey = param.page || 1; for (var n=0, i=(pagekey-1)*pagesz; n<pagesz && i<arr.length; ++n, ++i) { ret.rows.push(arr[arr.length-i-1]); } return [0, ret]; },
这样就可以模拟了,试试
callSvrSync("Ordr.query");callSvrSync("Ordr.query", {page: 2, rows: 10});
注意:上面返回数据的基本格式仍然是筋斗云框架的格式,即成功返回[0, 数据]
,失败返回[错误码,错误信息]
。
如果不是这样的格式,请阅读前面介绍过的“接口适配”章节去配置MUI.callSvrExt
。
在app.js中设置为initPageList设置缺省选项:
$.extend(initPageList.options, { pageszName: "rows", pagekeyName: "page", // 设置 data.list, data.nextkey (如果是最后一页则不要设置); 注意pagekey可以为空 onGetData: function (data, pagesz, pagekey) { data.list = data.rows; if (pagekey == null) pagekey = 1; if (data.total > pagesz * pagekey) data.nextkey = pagekey + 1; }});
在onGetData回调中,设置data.list及data.nextkey属性(如果是最后一页则不要设置)。
注意:app.js与index.js的区别是,前者适用于项目下的所有应用,而index.js只是index.html这个H5应用的主程序。
配置后,项目下所有列表都将应用这个适配规则。如果只是个别列表适配需要调整,可以在调用initPageList时指定这些选项,如:
var listItf = initPageList(jpage, { ... pageszName: 'rows', pagekeyName: 'page', onGetData: ... });
考虑这样一种情况,后端就返回一个列表如[ {...}, {...} ]
,不支持分页,那么是否可以使用分页列表?
答案是仍然可用,initPageList支持一个纯数组,它将被当成列表的最后一页处理,无法上拉加载,但仍支持下拉刷新。
- 变脸式应用 / 分页列表框架(四)
- 变脸式应用 / 分页列表框架
- 变脸式应用 / 分页列表框架(二)
- 变脸式应用 / 分页列表框架(三)
- 变脸式应用 - 常用组件(二)
- 变脸式应用
- jdcloud-m(筋斗云) 变脸式单网页应用框架
- 变脸式应用 / 进入与退出应用(二)
- 变脸式应用 - 逻辑页
- 变脸式应用 - 常用组件
- 变脸式应用 / 制作原生APP(二)
- 变脸式应用 - 进入与退出应用
- 变脸式应用 / H5应用优化
- 变脸式应用 / H5应用发布上线
- 筋斗云框架前端:“变脸式应用”的页面路由设计
- 变脸式应用 - 调用后端接口
- 变脸式应用 / 制作原生APP
- 变脸式应用 / 创建多个H5应用
- 【.Net码农】【MVC】多层架构+MVC+EF+AUTOFAC+AUTOMAPPER
- windows下设置tomcat内存
- setNeedsUpdateConstraints,needsUpdateConstraints等基于约束的AutoLayer的方法
- 数据结构实验之二叉树二:遍历二叉树
- ASP.NET中GridView使用简单攻略
- 变脸式应用 / 分页列表框架(四)
- 蓝桥杯 算法提高 P1001
- 北漂的程序猿何去何从
- UITableView如何开启极简模式
- Python正则表达式验证邮箱
- IBM HyperLedger fabric基础
- sql 2008获取表字段说明
- 欢迎使用CSDN-markdown编辑器
- clang: a C language family frontend for LLVM