【问题标题】:How to use a local JSON object with angular-datatables如何使用带有角度数据表的本地 JSON 对象
【发布时间】:2015-03-19 01:09:19
【问题描述】:

我想这样做:

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 警告:表 id=DataTables_Table_0 - Ajax 错误。有关此错误的更多信息,请参阅http://datatables.net/tn/7

另外,我不能使用任何 Ajax 选项从 URL 获取 json 数据,因为我的 angularjs 项目使用 Express 和 Rest API,所以在尝试使用 GET/POST 获取数据时出现 401 not authorized 错误类似“/api/data/getJsonData”的 URL。

有什么想法吗?谢谢。

【问题讨论】:

    标签: angularjs datatables


    【解决方案1】:

    我遇到了与 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 还很陌生,所以很可能有一种更优雅/正确的方法来做这件事,但它对我有用。

    【讨论】:

    • 你好。 myTableDataObject 到底是什么意思。是javascript对象吗?
    • @jasmo2 - 是的,您尝试加载到表中的数据对象。所以在 OP 中它将是testdata。这是来自一个旧项目,所以我不得不再次查找它以提醒自己,看起来我犯了一个错误,应该传递函数本身而不是调用它。我会相应地编辑答案,但请根据您的经验随意修改。
    【解决方案2】:

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

    【讨论】:

    • 你能展示一些我们如何在函数中做到这一点的代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2023-03-22
    • 2015-09-04
    • 2016-06-23
    相关资源
    最近更新 更多