可以将 angular-datatables 与服务器端数组源数据而不是对象源数据一起使用

Possible to use angular-datatables with serverside array sourced data instead of object sourced data

我正在尝试使用 angular-datatables 进行服务器端处理。但是,似乎 angular-datatables 期望来自服务器的数据是对象格式 (object vs array data described),每个 table 数据点之前都有列名。我想配置 angular-datatables 以接受基于数组的数据,因为我无法修改仅以数组格式输出数据的服务器端输出。

我在我的 javascript 中配置 Datatables,如下所示:

var vm = this;
vm.dtOptions = DTOptionsBuilder.newOptions()
    .withOption('ajax', {
     url: 'output/ss_results/' + $routeParams.uuid,
     type: 'GET'
 })
 .withDataProp('data')
 .withOption('processing', true)
 .withOption('serverSide', true);

我来自服务器的数据在数组格式中如下所示:

var data = [
    [
        "Tiger Nixon",
        "System Architect",
        ",120"
    ],
    [
        "Garrett Winters",
        "Director",
        ",300"
    ]
]

但据我所知,angular-datatables 需要对象格式的数据,如下所示:

[
    {
        "name":       "Tiger Nixon",
        "position":   "System Architect",
        "extn":       "5421"
    },
    {
        "name":       "Garrett Winters",
        "position":   "Director",
        "extn":       "8422"
    }
]

我尝试不定义 dtColumns 或将其设置为像 vm.dtColumns = []; 那样的空数组,但是当我这样做时收到一条错误消息。当我配置 dtColumns 并承诺通过 ajax 加载列数据时,我收到数据 table 错误 #4,因为它无法在数据中找到我的 table 数据点之前的列名从服务器检索。

是否可以配置 angular-datatables 以接受基于数组的数据? 我在 [=19 上找不到任何东西=]表示可以这样配置。

编辑:所以我删除了我认为导致问题的.withDataProp('data')。 table 现在工作得更好了一点,但它仍然坏了。加载后,我收到消息 No matching records found。尽管它的正下方写着 Showing 1 to 10 of 60,349 entries Previous1…456…6035Next 有谁知道为什么会这样?

如果您想使用数组数组而不是对象数组,只需引用数组 indexes 而不是对象名称:

$scope.dtColumns = [
   DTColumnBuilder.newColumn(0).withTitle('Name'),
   DTColumnBuilder.newColumn(1).withTitle('Position'),
   DTColumnBuilder.newColumn(2).withTitle('Office'),
   DTColumnBuilder.newColumn(3).withTitle('Start date'),
   DTColumnBuilder.newColumn(4).withTitle('Salary')
]

演示使用通过 AJAX -> http://plnkr.co/edit/16UoRqF5hvg2YpvAP8J3?p=preview

加载的著名 "Tiger Nixon" 数组