如何在 JavaScript mashup 中最好地执行来自多个源的分页和排序

问题描述 投票:0回答:1

我正在构建一个 Angular 应用程序,该应用程序从多个源获取具有相似模式的数据。实际获取数据并呈现数据非常简单。我将所有请求构建到一个数组中,将数组提供给

$q
,然后解决返回所有数据的承诺。

我的问题是基于服务器的分页和排序。现在我只是将页面大小设为

5 * n
,其中
n
只是数据源的数量。但是,如果有人按
Created
或类似的内容排序,我有时会得到意想不到的结果,因为只有 5 个项目的源将全部出现在第一页上,无论它们的创建日期如何。因此,第一页可能是 2016 年 1 月的 20 项,最后 5 项都来自 2015 年 5 月。如果我然后前进到下一页,我会得到预期的结果,直到我进入 2015 年 5 月的条目更大的数据源。那么较小列表中的那些五月项目将不会显示。

想法?建议?如果答案是我很愚蠢并且应该以其他方式做到这一点,我对此持开放态度。

目前所有数据源都相对较小,因此我只需返回所有项目并在 UI 中完成所有分页和排序。随着他们的成长,这种情况在未来不太可能持续。

为了清楚起见,这是 SharePoint 2010

ListData.svc
odata 服务。但这实际上并不是 SharePoint 特定的问题。

javascript angularjs sorting pagination odata
1个回答
0
投票

如果您有多个数据源,则无法在不获取分页点之前的所有数据的情况下进行分页,例如

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

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

© www.soinside.com 2019 - 2024. All rights reserved.