服务器端和ember.js中的令牌分页

时间:2014-02-23 17:05:39

标签: javascript ember.js ember-data

我在前端有一个带有ember-data的ember.js应用程序来抽象模型,而在服务器端我有一个REST Api。当我需要服务器中的项目列表时,我会对/items执行GET请求,如果列表中包含10个以上的项目,我会收到json:

{
    nextPageToken:"token",
    items:[
          ...
          ]
}

nextPageToken是用于获取下一页中的项目的标记,在此特定情况下,使用页面标记生成另一个GET请求:/items?pageToken=token

我不知道我可以使用此令牌创建一个页面的最佳方式,该页面显示带有指向下一页和前一页(使用上一页存储令牌)的项目以及ember和ember-data。

更新

经过一番研究后,我找到了一个导航到下一页的解决方案,扩展了RESTSerializer中的extractMeta函数,将nextPageToken存储为元数据。

App.ApplicationSerializer = DS.RESTSerializer.extend({
    //...
    // Extract the pageToken and store it as metadata from the desired type.
    extractMeta: function(store, type, payload) {
        store.metaForType(type, { nextPageToken: payload.nextPageToken });
    }
}

然后在我的页面的控制器中创建一个基于存储的页面标记的属性。

App.ItemsController = Ember.ArrayController.extend({
    //...
    // Get the page token store as metadata from the item model.
    nextPageToken: function(){
        var meta = this.store.metadataFor("item");
        return meta.nextPageToken;
    }.property('item')
}

现在可以在模板中使用页面标记来创建指向下一页的链接。 有了这个,问题的一部分就解决了,但我仍然需要找到一个解决方案来导航到以前的页面。

0 个答案:

没有答案