Jquery数据表的页数

时间:2017-12-26 10:48:17

标签: javascript jquery datatable

我试图在Spring HATEOAS上使用带有后端的jquery datatables,它返回带有结构的HAL文档:

{
  "_embedded": {...},
  "_links": {...},
  "page": {
    "size": 10,
    "totalElements": 15,
    "totalPages": 2,
    "number": 0
  }
}

目前我的数据表设置如下:

const table = TABLE_ELEMENT.DataTable({
    processing: true,
    ordering: false,
    serverSide: true,
    paging: true,
    pagingType: 'numbers',
    pageLength: 10,
    lengthChange: false,
    recordsTotal: 15,

    searching: false,
    ajax: {
      type: 'GET',
      url: '/api/employees',
      dataSrc: data => data._embedded.employees,
    },
    columns: [
      {data: 'name'},
      {data: 'email'},
      {data: 'phone'},
      {data: 'birthDay'}
    ]
  });

但问题是我无法正确设置我拥有的页数。如果我使用serverSide: true我的表有无限量的页面,如果我使用serverSide: false而我的表只有1页。怎么解决这个问题?

要在页面之间切换,我使用代码:

TABLE_ELEMENT.on('page.dt', () => {
    table.ajax.url('/api/employees?page=' + table.page.info().page);
});

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我用:{/ p>替换了属性dataSrc

dataFilter: (data) => {
  let json = JSON.parse(data);
  json.recordsTotal = json.page.totalElements;
  json.recordsFiltered = json.page.totalElements;
  json.pageLength = json.page.size;
  json.data = json._embedded.employees;
  return JSON.stringify(json);
}

也是属性

pageLength: 10,
recordsTotal: 15

可以删除