0

我现在的情况是我有一个模型可以加载大约 50 个汽车信息。在视图中,我有一个带有一些过滤器的侧边栏,例如年份、型号、里程等。当我过滤这些时,一切正常,但是,由于模型变得相当大,客户要求分页。因此,我不会在一个模型上加载所有汽车,而是只加载 10 辆,然后单击“显示更多”按钮后,它会加载更多 10 辆并附加到模型并显示它。

问题是,如果我只加载前 10 个并进行过滤,则客户端希望按所有这些过滤。所以我想,没有办法。

我能看到的唯一方法是加载模型中的所有汽车,并且一次只显示 10 辆汽车,当我开始过滤时,它会打破这个限制并过滤所有汽车。可行吗?任何其他想法如何解决这个问题?

4

3 回答 3

0

我已经设法使用以下方法实现了欲望行为:https ://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination

于 2015-08-14T16:49:59.483 回答
0

你不会在 AngularJS 中找到解决方案。

如果客户端请求分页,很可能是由于性能原因。避免这个问题并实现除过滤之外的分页并不能解决性能问题,更不用说会让客户感到有些被欺骗(我会)。

过滤应该在服务器端完成,它将已经过滤的结果传递给客户端。

于 2015-08-14T14:54:21.893 回答
0

您可以在服务器上进行过滤。但是,在返回 JSON 时,您应该做一个小改动:

你发送:

{ page: 0, itemsByPage: 10, year: 2012, ... }

并在 JSON 返回时,通知记录总数和分页记录

{ totalRecords: 239, pageItems: [ { id: 28, name: 'ford mustang'}  ... ] }

然后,承诺然后,您显示“pageItens”并显示基于totalRecords的页面按钮

如果你使用 mysql,你可以使用 found_rows() 在分页选择上获取 totalRecords:

https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

于 2015-08-14T14:58:20.490 回答