2

我正在尝试将角度数据表与服务器端处理一起使用。但是,似乎 angular-datatables 期望来自服务器的数据采用对象格式(描述的对象与数组数据),列名位于每个表数据点之前。我想将 angular-datatables 配置为接受基于数组的数据,因为我无法修改仅以数组格式输出数据的服务器端输出。

我在我的 javascript 中配置数据表,如下所示:

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",
        "$3,120"
    ],
    [
        "Garrett Winters",
        "Director",
        "$5,300"
    ]
]

但据我所知,angular-datatables 期望对象格式的数据如下:

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

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

是否可以配置角度数据表以接受基于数组的数据?我在angular-datatables 网站 上找不到任何表明可以以这种方式配置的内容。

编辑:所以我删除了.withDataProp('data')我认为导致问题的那个。这张桌子现在工作得更好了,但它仍然坏了。加载后,我收到消息No matching records found。即使在它的正下方它说Showing 1 to 10 of 60,349 entries Previous1…456…6035Next 有谁知道这可能是为什么?

4

1 回答 1

0

如果要使用数组数组而不是对象数组,只需引用数组索引而不是对象名称:

$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 加载的著名“Tiger Nixon”数组 -> http://plnkr.co/edit/16UoRqF5hvg2YpvAP8J3?p=preview

于 2016-03-31T11:11:05.580 回答