您好我想为我的应用程序创建一个分页,我正在使用spring-boot Pagination和ember-cli-pagination。在使用spring-boot分页之前,rest控制器以下列格式返回数据,
[{
"id" : 56789,
"name" : "sample book",
"status": "available",
},{
"id" : 56789,
"name" : "sample book",
"status": "available",
}]
使用spring-pagination后,我的rest控制器以格式
返回数据{
"content":
[{
"id" : 56789,
"name" : "sample book",
"status": "available",
},{
"id" : 56789,
"name" : "sample book",
"status": "available",
}],
"last": true,
"totalElements": 5,
"totalPages": 2,
"size": 3,
"number": 1,
"sort": null,
"first": false,
"numberOfElements": 2
}
现在数据的结构发生了彻底的变化,因此我需要修改我的ember模型,以便ember数据能够正确地序列化我的数据。
有没有其他方法可以应用spring-boot-pagination以最少的更改来包含数据?有任何标准或指导方式吗?
我真的需要改变我的余烬模型吗?
Ember模特:
export default DS.Model.extend({
id: DS.attr(),
name: DS.attr(),
status: DS.attr()
});
Route.js
import Ember from 'ember';
import RouteMixin from 'ember-cli-pagination/remote/route-mixin';
export default Ember.Route.extend(RouteMixin, {
model: function(params) {
params.paramMapping = {
perPage: "size"};
return this.findPaged('book',params);
},
resetController: function (controller) {
var queryParams = controller.get('queryParams');
queryParams.forEach(function (param) {
controller.set(param, null);
});
},
});
Controller.js
import Ember from 'ember';
import pagedArray from 'ember-cli-pagination/computed/paged-array';
export default Ember.Controller.extend({
queryParams: ["page", "perPage",'uid'],
pagedContent: pagedArray('content', {pageBinding: "page", perPageBinding: "perPage"}),
totalPagesBinding: "pagedContent.totalPages",
page: 0,
perPage: 2,
//some actions
});
在浏览器网络标签中,我可以看到响应,但在浏览器控制台中,我收到以下消息,
处理路线时出错:book.index数据未定义_pushInternalModel
在Chrome中获得以下异常:
ember.debug.js:30610处理路线时出错:books.index无法读取属性'键入'未定义的TypeError:无法读取属性' type'未定义的
我的teomplate没有加载。
index.hbs
<div class="row">
<div class="col-md-2">
<h3>
Books
</h3>
</div>
</div>
<br/>
{{#each pagedContent}}
<h2>entered paged content</h2>
{{/each}}
{{page-numbers content=pagedContent}}
任何帮助都应该是值得的。