0

我正在使用angular datatables,这是流行的 jquery 数据表库的 angularized 版本。

这是我的html

<body ng-controller="TestCtrl">

    <input type="button" ng-click="changeColumns()" value="Change Columns"/>
    <table datatable="" dt-options="dtOptions" dt-columns="dtColumns" class="row-border hover"></table>

</body>

这是我的 javascript

var module = angular.module('TestApp', ['datatables']);

module.controller('TestCtrl', [
    '$scope',
    'DTOptionsBuilder',
    'DTColumnBuilder',
    function($scope, DTOptionsBuilder, DTColumnBuilder) {

         $scope.dtOptions = DTOptionsBuilder.newOptions();

         $scope.dtColumns = [
             DTColumnBuilder.newColumn('ColumnA').withTitle('ColumnA'),
             DTColumnBuilder.newColumn('ColumnB').withTitle('ColumnB')
         ];

         $scope.changeColumns = function() {
             $scope.dtColumns = [
                 DTColumnBuilder.newColumn('ColumnA').withTitle('ColumnA'),
                 DTColumnBuilder.newColumn('ColumnB').withTitle('ColumnB'),
                 DTColumnBuilder.newColumn('ColumnC').withTitle('ColumnC'),
                 DTColumnBuilder.newColumn('ColumnD').withTitle('ColumnD')
             ];

         };
    }
]);

这就像我可以将问题减少到最低限度一样简单,但我仍然遇到同样的错误。当页面首次加载时,我按预期看到了“ColumnA”和“ColumnB”。然后我点击表格上方的“更改列”按钮。

表格行消失,原来的两列保留,我在浏览器控制台中收到此错误。

Error: headerCells[i] is undefined

然后是一个讨厌的堆栈跟踪。我试图复制我之前链接的教程,但有一些细微差别。我不明白为什么这个简单的例子对我不起作用。有人可以帮忙吗?

4

2 回答 2

5

在我的项目中面临同样的问题。

vm.table.dtInstance.DataTable.destroy();
angular.element('#table-id').children('thead').children().remove();
angular.element('#table-id').children('tbody').children().remove();
vm.table.dtColumns = columnsList;

对我有帮助。当您设置新的列列表时,它会删除整个数据表并从头开始创建它。

于 2015-11-19T16:22:01.617 回答
-1

用这个

dtColumns.push(DTColumnBuilder.newColumn('ColumnC').withTitle('ColumnC'))
dtColumns.push(DTColumnBuilder.newColumn('ColumnD').withTitle('ColumnD'))
于 2016-04-19T12:04:48.680 回答