【问题标题】:ember.js rest api with paginationember.js 带分页的休息 api
【发布时间】:2013-03-02 16:38:28
【问题描述】:

目前我没有意义如何使用 ember-data 实现分页。我发现,我可以返回“元”属性作为响应,并且 ember-data 不会引发错误。但我只是不知道如何访问它,也不知道该属性的预期用途。

互联网上的几个例子假设我已经将整个集合加载到 ember,或者他们做了一些小把戏并进行无限滚动,这不需要有关页数的信息。

我认为加载所有记录如果我有

所以基本上我想使用 ember 和 ember-data 来构建我的第一个实际应用程序,但我只是认为这不是一个好主意。

好的,那么有人知道如何解决这个基本但复杂的问题吗? :)

【问题讨论】:

  • 您使用的是 RC1 和 ember-data rev 11 吗?另外你用的是什么适配器?你有什么服务器后端?您需要每个页面都尊重历史记录和返回按钮吗?
  • 看看this question。 github跟踪器上也有一些ongoing discussion
  • @Toran Billups:所有最新的取自 github repos。
  • 非常感谢您的链接!
  • 对于后端:它是基于silex 的简单解决方案。历史记录和后退按钮会很好。

标签: pagination ember.js ember-data


【解决方案1】:

好的,这里有一些想法可以帮助您入门。

首先,你必须从一条路线开始,并以页码作为动态参数。

this.resource('posts', { path: '/posts/:page' };

那么由于我没有使用 Silex 的经验,因此您需要支持某种可用于分页的服务器端参数。例如offsetlimit,其中第一个表示您要跳过多少条记录,第二个表示您希望从那里选择多少条记录。理想情况下,您应该将它们实现为查询参数,例如 ?offset=0&limit=10

然后您只需按如下方式实现您的表路由:

App.TableRoute = Ember.Route.extend({
    model: function (params) {
        return App.Post.find({ offset: (params.page - 1) * 10, limit: 10  });
    }
});

然后您可以开始做一些更神奇的事情并创建每页参数的项目或通过提前获取所有记录的数量来验证页码。

【讨论】:

  • 感谢您的回答,但我切换到了 angular.js。在我看来,它比 Ember.js 好得多——一切都可以用 karma runner 和 jasmine 很好地测试。
猜你喜欢
  • 2013-12-20
  • 2015-06-30
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 2022-11-04
  • 2010-10-29
  • 2019-07-05
相关资源
最近更新 更多