如何在JavaScriptmashup中从多个源最佳地执行分页和排序

How to best perform paging and sorting from multiple sources in JavaScript mashup

本文关键字:最佳 执行 分页 排序 JavaScriptmashup      更新时间:2023-09-26

我正在构建一个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

确保正确排序的唯一方法是提取所有数据,直到您为所有源显示的页面组合所有数据,排序并在客户端中获得所需页面。