Angular DTOptionsBuilder ajax 调用完成时是否有回调?

Is there a callback for when an Angular DTOptionsBuilder ajax call finishes?

我正在使用 angular 数据table,我有一些代码如下所示:

this.dtOptions = DTOptionsBuilder.newOptions()
    .withOption('ajax', {
        type: 'POST',
        contentType: 'application/json',
        processData: false,
        beforeSend: function(xhr, settings) {
            ...
        },
        data: function(data) {
            ...
        }
    })
    .withDataProp('data')
    .withOption('processing', true)
    .withOption('serverSide', true);

一切正常,当 ajax 调用 returns 时,页面上的 table 填充了数据。我现在要做的就是检测 ajax 调用何时完成。我尝试在 beforeSend:

下面使用它
success: function(data, textStatus, jqXHR, fnCallback) {
    console.log(data);
}

这实际上将返回的数据打印到控制台,但是当我添加 success 回调时,页面上的 table 永远不会填充数据。那么,当 ajax 完成后,如何在页面上像往常一样填充我的 table 数据时触发回调?

dataTables 在内部使用 ajax success 回调,因此如果您覆盖它,就会破坏它。但是,dataTables 引入了它自己的 dataSrc 回调,它从 dataTables 成功处理程序中触发,让您有机会在插入任何数据之前操作响应:

this.dtOptions = DTOptionsBuilder.newOptions()
  .withOption('ajax', {
     dataSrc: function(json) {
       //success!
       console.log(json);
       return json
     },
     type: 'POST',
     contentType: 'application/json',
     processData: false,
     ....

查看演示 -> http://plnkr.co/edit/94EWyDanIawCJJgyagiy?p=preview

正如您在演示中看到的那样,您在 ajax complete 回调中还有一个替代方案:

ajax : {
  complete: function(jqXHR, textStatus) {
    console.log(jqXHR.responseText)
  } 
  ..
}