如何在JavaScriptmashup中从多个源最佳地执行分页和排序
How to best perform paging and sorting from multiple sources in JavaScript mashup
我正在构建一个Angular应用程序,该应用程序从多个源获取具有相似模式的数据。数据的实际获取和呈现非常简单。我将所有请求构建到一个数组中,将数组馈送到$q
,然后解析返回所有数据的promise。
我的问题是基于服务器的分页和排序。现在我只是制作页面大小5 * n
,其中n
只是数据源的数量。但是,如果有人按Created
或类似的东西排序,我有时会得到意想不到的结果,因为只有5个项目的源将全部出现在第一页上,而不管它们是在什么日期创建的。因此,第一页可能是2016年1月的20个项目,然后最后5个项目都是2015年5月的。如果我进入下一页,我会一直期待结果,直到我进入2015年5月的大型数据源条目。然后,较小列表中的5月份项目将不会显示。
想法?建议?如果答案是我很愚蠢,应该用另一种方式来做这件事,我对此持开放态度。
目前,所有的数据源都相对较小,所以我只需返回所有项目,并在UI中进行所有的分页和排序。随着他们的成长,这在未来不太可能是可持续的。
为了清楚起见,这是SharePoint 2010 ListData.svc
odata服务。但这并不是SharePoint特有的问题。
如果您有多个数据源,那么在不提取所有数据的情况下进行分页和排序是不可能的,例如
Source 1
Name
A
B
C
D
E
F
Source 2
Name
P
Q
R
S
T
U
现在,如果您想在按名称排序的同时获得第二个页面(大小为2*2),那么预期结果是
E
F
P
Q
通过你的方法,你最终会得到
C
D
R
S
确保正确排序的唯一方法是提取所有数据,直到您为所有源显示的页面,组合所有数据,排序并在客户端中获得所需页面。
相关文章:
- 在执行另一个异步函数之前,只有当条件为true时,才执行某些异步函数的最佳方法
- 使用Underscore/Lodash在javascript中执行非变异逆尾的最佳方法
- 执行属性别名的最佳方法
- javascript:在页面加载后执行该功能的最佳方法
- 如何在JavaScriptmashup中从多个源最佳地执行分页和排序
- 使用Javascript数组中的值执行if-else块的最佳方法
- 只在特定页面上执行js的最佳方式
- Node.js:执行多个异步操作的最佳方式,然后执行其他操作
- 在NodeJ中执行异步卷曲的最佳方式
- 在Angular 2中处理click和clickOutside事件执行优先级的最佳方式
- 从谷歌Chrome控制台调试的最佳方式.js文件,如果它被加载和执行后按钮被点击
- 表单提交执行JavaScript最佳实践
- 在特定页面上执行特定JS脚本的最佳实践
- 使用JavaScript执行带有参数的动作控制器的最佳方式是什么?
- 在锚上执行Javascript的最佳方式
- Firebase排行榜,最佳执行.SQL连接和顺序
- 在javascript中,使用回调执行多个异步函数的最佳实践是什么?
- Javascript:在执行函数之前等待同步加载脚本的最佳方式
- 什么'只有当我的所有JavaScript都使用jQuery加载时,这才是执行某些内容的最佳方式
- 在特定页面/正文类上执行 JavaScript 代码的最佳方式