こんにちは、私は 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 を使用した後、残りのコントローラーは次の形式でデータを返します。
{
"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()
});
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 未定義のプロパティ 'type' を読み取れません TypeError: 未定義のプロパティ 'type' を読み取れません
私のテムプレートがロードされていません。
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}}
どんな助けもかなりのものであるべきです。