Angularjs Datatable服务器端分页

问题描述 投票:5回答:3

我试图在此链接https://l-lin.github.io/angular-datatables/#/serverSideProcessing中使Angularjs Datatable服务器端分页

所以我使用这段代码

    $scope.dtOptions = DTOptionsBuilder.newOptions()
       .withOption('ajax', {
                  dataSrc: function(json) {
                    conole.log(json)
                    json['recordsTotal'] =json.length
                    json['recordsFiltered'] = json.length
                    json['draw']=1
                    conole.log(json)
                    return json;
                  },
              url: 'api/footestrecords',
              type: 'GET'
           })
       .withOption('processing', true)
       .withOption('serverSide', true)
       .withPaginationType('full_numbers');

我在dataSrc参数中手动添加了recordsTotal,recordsFiltered和row

这是添加recordsTotal,recordsFiltered和row之前和之后的json数据

添加之前的json数据

[Object, Object, Object, Object, Object, Object, Object, Object,
Object,Object, Object, Object, Object, Object, Object, Object, Object,
Object, Object, Object, Object, Object, Object, Object, Object, Object,
Object, Object]

添加后的json数据

 [Object, Object, Object, Object, Object, Object, Object, Object,
  Object, Object, Object, Object, Object, Object, Object, Object, Object,
  Object, Object, Object, Object, Object, Object, Object, Object, 
  Object,Object, Object, recordsTotal: 28, recordsFiltered: 28, draw: 1]

问题是分页不起作用,数据表显示一页中的所有数据,而当我点击分页按钮时没有动作。

javascript jquery angularjs datatables angular-datatables
3个回答
10
投票

返回的JSON格式应该是:

{
    data: [{Object},{Object},{Object},{Object}…]
    draw: "1"
    recordsFiltered: 91
    recordsTotal: 91
}

你可以从这里获得关于Datatables server-side paging, sorting and filtering in angularjs的完整教程


1
投票

删除.dataSrc并使用此选项:

.withDataProp(function(json) {
  console.log(json);
  json.recordsTotal = json.response.total;
  json.recordsFiltered = json.response.total;
  json.draw = 1;
  return json.response.data;
})

根据您的对象更改json.response。


0
投票
The return data must be list of object ["data"]=[{name:john,id:1},{name:jason,id:2}].

Try
  .withOption('ajax', {
                  dataSrc: function(data) {                 
                   return data.data;
                     }
                  })
Else,
       .withOption('ajax', {
                  "dataSrc": "data"
                  }
© www.soinside.com 2019 - 2024. All rights reserved.