我在前端有一个带有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')
}
现在可以在模板中使用页面标记来创建指向下一页的链接。 有了这个,问题的一部分就解决了,但我仍然需要找到一个解决方案来导航到以前的页面。