目前是否有可能使用分页ember-data 1.13
?
我有一个jsonapi.org
兼容的 API,其中包含next
顶级links
对象中的链接。如何告诉我的商店/响应数组加载此页面?
我想做的是这样的:
actions: {
loadMore() {
this.get('model').loadNextPage().then((data) => {
this.set('model', data);
});
}
}
谢谢
目前是否有可能使用分页ember-data 1.13
?
我有一个jsonapi.org
兼容的 API,其中包含next
顶级links
对象中的链接。如何告诉我的商店/响应数组加载此页面?
我想做的是这样的:
actions: {
loadMore() {
this.get('model').loadNextPage().then((data) => {
this.set('model', data);
});
}
}
谢谢
我的工作客户端破解:
我覆盖了适配器上的 ajaxOptions 以便可以直接访问 URL store.find('model', { loadNext: '/loadMoarLink' })
:
ajaxOptions(url, type, options) {
if(options && options.data && options.data.loadNext) {
url = options.data.loadNext;
delete options.data.loadNext
}
return this._super(url, type, options);
}
要访问链接,我会覆盖适配器上的 normalizeResponse 以将链接写入元对象:
normalizeResponse: function(store, primaryModelClass, payload, id, requestType) {
let links = payload.links;
let response = this._super(...arguments);
if(!get(response, 'meta')) {
set(response, 'meta', Ember.Object.create());
}
set(response, 'meta.links', links);
return response;
}
然后我可以从以下位置访问元数据setupController
:
controller.set('meta', Ember.copy(this.store.metadataFor('model'), true));
并始终查询next
数据:
this.store.query('model', {
loadNext: this.get('controller.meta.links.next')
})
分页即将推出https://github.com/emberjs/data/issues/2905。
对于临时修复,我重新编写了服务器逻辑,以便我的分页链接以meta
键而不是links
一个键返回。这样我就可以extractMeta
利用JSONAPISerializer
. 不是最好的解决方案,但我认为它会让我坚持下去,直到我可以实施官方方式。