2

嗨,我想为我的应用程序创建一个分页,因为我正在使用 spring-boot Paginationember-cli-pagination。在使用 spring-boot 分页之前,rest 控制器以以下格式返回数据,

[{
"id" : 56789,
"name" : "sample book",
"status": "available",
},{
"id" : 56789,
"name" : "sample book",
"status": "available",
}]

使用弹簧分页后,我的休息控制器以格式返回数据,

{
"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 数据而进行最小的更改?任何标准或指导的方法可以做到这一点?

我真的需要更改我的 ember 模型吗?

灰烬模型:

export default DS.Model.extend({
   id: DS.attr(),
   name: DS.attr(),
   status: DS.attr()
});

路由.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);
});
},

});

控制器.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:无法读取未定义的属性“类型”

我的模板没有加载。

索引.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}}

任何帮助都应该是可观的。

4

0 回答 0