可以使用带有服务器端数组源数据的角度数据表而不是对象源数据

时间:2016-03-31 06:21:37

标签: datatables angular-datatables

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

我在我的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 = [];这样的空数组,但是当我这样做时,我收到一条错误消息。当我配置承诺通过ajax加载列数据的dtColumns时,我得到datatables错误#4,因为它无法在从服务器检索到的数据中找到我的表数据点之前的列名。

是否可以配置角度数据表以接受基于数组的数据?我无法在angular-datatables website上找到任何表明可以通过这种方式进行配置的内容。

修改:所以我删除了我认为导致问题的.withDataProp('data')。桌子现在好一点,但它仍然坏了。加载后,我收到消息No matching records found。即使在它下方,它也说Showing 1 to 10 of 60,349 entries Previous1…456…6035Next有谁知道为什么会这样?

1 个答案:

答案 0 :(得分: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')
]

演示使用着名的#34; Tiger Nixon"通过AJAX加载的数组 - >的 http://plnkr.co/edit/16UoRqF5hvg2YpvAP8J3?p=preview