对服务器的Ajax调用没有被触发

时间:2014-12-05 22:22:27

标签: angularjs datatables

我目前无法获取angular-dataTables来从服务器请求数据。

当我使用.fromFnPromise()时,它运行正常。我的代码被调用,然后我调用我的服务来获取数据。

  vm.dtOptions = dataOptionBuilder.fromFnPromise(
        service.getViewItems()
               .then(function(data) {
                     vm.logs = data;
                });
     )
     .withPaginationType('full_numbers')
     .withDisplayLength(25);

但是,我现在需要进行服务器端分页,因此我使用.withOptions()并传入ajax选项:

    vm.dtOptions = dataOptionBuilder.newOptions()
                                    .withOption('ajax', {
                                        url: '/api/services/app/patients/GetViewItems',
                                        type: 'POST'
                                    })
                                    .withDataProp('data')
                                    .withOption('serverSide', true)
                                    .withOption('processing', true)
                                    .withOption('order', [[0, 'asc'], [1, 'asc']])
                                    .withPaginationType('full_numbers');

查看

<table id="dt_basic" datatable dt-options="dtOptions" dt-columns="dtColumns" class="table table-striped table-bordered table-hover">
    <thead>
        <tr>
            <th data-class="expand"><i class="fa fa-fw fa-lock"></i>Comment</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="item in vm.logs">
            <td>{{ item.comment }}</td>
        </tr>
    </tbody>
</table>

我将此代码基于作者Plnkrl-lin

知道为什么它没有触发AJAX请求吗?

1 个答案:

答案 0 :(得分:1)

根据datatables参考指南,.withOption('serverSide', true)表示您有责任实施paging on your server

您可以use a function使用分页所需的信息(以及过滤和排序)调用您的角度服务,而不是指定ajax服务的路径。

.withOption('ajax', function(data, callback, settings) {
  //pass the data parameter to your service to access necessary paging info
  service.getViewItems(data)  
   .then(function(result) {
       callback(result);
    });
})

以下是将您的服务挂钩到选项构建器的演示:http://plnkr.co/edit/1V9qdpO47XBFtGVV6j2I?p=preview