【发布时间】:2012-12-30 08:23:08
【问题描述】:
我正在页面中显示使用 Ember Data RESTAdapter 获取的文章列表。我需要实现一个引导式分页器(请参阅:http://twitter.github.com/bootstrap/components.html#pagination),并且似乎无法在单个请求中找到用于返回分页数据(例如页数、文章数、当前页面)的合理模式。
例如,我希望 API 返回如下内容:
{
articles: [{...}, {...}],
page: 3,
article_count: 4525,
per_page: 20
}
一个想法是添加一个 App.Paginator DS.Model 以便响应看起来像:
{
articles: [{...}, {...}],
paginator: {
page: 3,
article_count: 4525,
per_page: 20
}
}
但是,为了这么微不足道的事情拼凑起来似乎有点过头了。有没有人解决了这个问题或找到了他们喜欢的特定模式?是否有一种简单的方法来管理 RESTAdapter 映射以解决此类情况?
【问题讨论】:
-
我认为这还没有固定的约定。你可以看看Ember Table,看看他们是如何实现它的,因为演示显示了 500 000 条记录的无限滚动并且速度非常快。
-
Ember Table 是一种显示数据的方式,而不是如何加载它们。问题似乎集中在处理来自 API 的元数据以进行分页。我认为这个问题是相关的:goo.gl/GPnP1。但我真的不喜欢建议的解决方案..
-
@louiscoquio 这绝对不是一个漂亮的解决方案,但与我认为明显的、被黑的解决方案相差不远。我今天需要开始工作,所以我会分享结果。
-
@louiscoquio RESTSerializer 对 json 响应中的“元”属性进行了特殊处理,但正如相关问题中所指出的,它不会在任何地方公开。我将继续使用自定义序列化程序 hack,因为在不久的将来它应该很容易与更好的解决方案集成。在我看来, DS.RecordArray 应该具有特殊属性,例如包含 meta。在这种情况下,也许更好的命名约定是 DS.Result 或类似的。
标签: pagination ember.js ember-data