如何使用具有angular-datatables的本地JSON对象

时间:2015-01-20 17:28:06

标签: angularjs datatables

我想这样做:

testdata = [{"id":"58",...}]; // local object

$('#test').dataTable({
    "aaData": testdata,
    "aoColumns": [
        { "mDataProp": "id" }
    ] });

使用angular-datatables模块。我试过这个:

控制器

$scope.dtOptions = DTOptionsBuilder.fromSource('[{"id": 1}]')
        .withDataProp('data')
        .withBootstrap()
        .withPaginationType('full_numbers');
$scope.dtColumns = [
        DTColumnBuilder.newColumn('id').withTitle('ID')
];

查看

<table datatable="" dt-options="dtOptions" dt-columns="dtColumns" class="table table-striped table-bordered"></table>

但它根本不起作用,我收到此错误消息:

  

DataTables警告:table id = DataTables_Table_0 - Ajax错误。有关此错误的详细信息,请参阅http://datatables.net/tn/7

另外,我不能使用任何Ajax选项从URL获取json数据,因为我的angularjs项目使用Express和Rest API,因此在尝试使用GET / POST获取数据时,我得到401未授权错误URL如“/ api / data / getJsonData”。

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:15)

我对OP有类似的问题,而Mica的答案对我指向正确的方向非常有帮助。我使用的解决方案如下:

var getTableData = function() {
    var deferred = $q.defer();
    deferred.resolve(myTableDataObject); 
    return deferred.promise;
};

然后在DTOptionsBuilder中使用它:

$scope.dtOptions = DTOptionsBuilder.fromFnPromise(getTableData)
    .withPaginationType('full_numbers');

我对Angular很新,实际上是JavaScript,所以可能有一种更优雅/更正确的方法,但它对我有用。

答案 1 :(得分:10)

您不能使用.fromSource,因为它始终会执行ajaxUrl请求。但您可以使用.fromFnPromise()代替。将您的JSON放入一个返回deferred.promise的函数中。