可以将 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" 数组
我正在尝试使用 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" 数组