我正在构建一个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
确保正确排序的唯一方法是提取所有数据,直到您为所有源显示的页面,组合所有数据,排序并在客户端中获得所需页面。