как задать количество страниц, полученных из ответов, как число, а не как массив в PaginationJS - PullRequest
0 голосов
/ 02 октября 2019

Я использую paginationjs

, как заставить paginationjs работать с количеством страниц, а не с массивом?

с сервера я получаю следующие данные:

content: (2) [{…}, {…}]
number: 2
numberOfElements: 2
size: 2
sort: {unsorted: false, sorted: true, empty: false}
totalElements: 38
totalPages: 19

мои настройки пагинации:

$('#abc').pagination({
  pageSize: 10,
  pageNumber: 2,
  dataSource: 'http://localhost:9090/admin/api/modelType/page?pageNumber=2&pageSize=2',
  locator: 'totalPages',
  totalNumberLocator: (data) => data.totalPages,
}

Я не могу изменить данные с номера на массив в теле ответа. Есть ли другой способ заставить его работать без указания значения или массива в жестком коде?

Также я попытался найти номер количества страниц с помощью locator: 'totalPages', но он говорит, что totalPages не является массивом.

Спасибо

вот запрос:

enter image description here

проанализированный полученный объект:

enter image description here

ошибка "локатор не является массивом":

Pagination: dataSource.totalPages must be an Array

РЕДАКТИРОВАТЬ Еслия удалил локатор, я получил еще одну ошибку, говоря Pagination: "locator" is incorrect.

Pagination:

1 Ответ

0 голосов
/ 02 октября 2019

Вы получаете ответ от сервера, который выглядит следующим образом:

{
  content: [{…}, {…}]
  number: 2
  numberOfElements: 2
  size: 2
  sort: {unsorted: false, sorted: true, empty: false}
  totalElements: 38
  totalPages: 19
}

... верно?

Затем вы хотите передать «totalElements» в конфигурацию пагинации, верно?!? ... если это то, что вам нравится, то я думаю, что согласно документации (см. "Асинхронное и динамическое общее число"), которую можно решить следующим образом:

$('#abc').pagination({
  pageSize: 10,
  dataSource: '/admin/api/modelType/page?pageNumber=2&pageSize=2',

//how can i set totalNumber from a responce data, not a hardcoded value?
  totalNumberLocator: function(response) { 
    return response.totalElements;
  },
}

РЕДАКТИРОВАТЬ

Хорошо, вам нужно передать сумму totalElements в totalNumberLocator, а не числоTOTALPAGES. И удалите локатор: «Всего страниц». Посмотрите код выше, я уже получил это.

...