TypeError:使用angular-datatables时无法读取null的属性'parentNode'

9 javascript jquery datatables angularjs

我正在尝试使用angular-datatables并获得以下错误:

 - TypeError: Cannot read property 'parentNode' of null while using angular-datatables".
   Note: all index files and dependencies have been included.
Run Code Online (Sandbox Code Playgroud)

view.html

<table datatable="" dt-options="dtOptions" dt-columns="dtColumns" class="row-border hover">
</table>
Run Code Online (Sandbox Code Playgroud)

controller.js

$scope.finalArray = [];
$scope.dtOptions;
$scope.dtColumns;
/*code includes a function call to url to fetch data
after it is successful, it goes to function dt */

 function dt(){
$scope.dtOptions = DTOptionsBuilder.fromFnPromise(function(){return $q.when($scope.finalArray);})
    .withTableTools("bower_components/datatables-tabletools/swf/copy_csv_xls_pdf.swf")
    .withTableToolsButtons([
        'copy',
        'print', {
            'sExtends': 'collection',
            'sButtonText': 'Save',
            'aButtons': ['csv', 'xls', 'pdf']
        }
    ]);
 $scope.dtColumns = [];
    for(var i in $scope.columnTable){    $scope.dtColumns.push(DTColumnBuilder.newColumn($scope.columnTable[i]).withTitle($scope.columnTable[i]));
}
  }
Run Code Online (Sandbox Code Playgroud)

这是我收到错误消息的错误消息:

at Object.<anonymous> (jquery.dataTables.min.js:131)
at Object.t.iterator (jquery.dataTables.min.js:96)
at Object.<anonymous> (jquery.dataTables.min.js:131)
at Object.t.extend.g [as destroy] (jquery.dataTables.min.js:99)
at m.fnDestroy (jquery.dataTables.min.js:80)
at HTMLTableElement.<anonymous> (jquery.dataTables.min.js:84)
at Function.n.extend.each (jquery.min.js:2)
at n.fn.n.each (jquery.min.js:2)
at m [as dataTable] (jquery.dataTables.min.js:83)
at h.fn.DataTable (jquery.dataTables.min.js:159)
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

Sib*_*enu 1

请在这里查看 MaicolBen 先生的评论。这可能有帮助。

“该表没有插件,在我看来,应用该指令时该表尚未准备好。因为当我创建在第二次工作后应用该插件的其他指令时!但行为很慢:”

.directive('myDatatable', function($compile, $timeout){
    return function(scope, elem, attr) {
        $timeout(function(){
            elem.attr('datatable', 'ng');
            elem.removeAttr('my-datatable');
            $compile(elem)(scope);
        }, 1000);
  };
})
Run Code Online (Sandbox Code Playgroud)