无法读取角度数据表中未定义的属性“aDataSort”

我试图在我的项目中实现angular-datatables,但它返回“TypeError:无法读取属性’aDataSort’的undefined

我在用

Angular js版本1.4.9。

Jquery版本2.1.1

DataTable版本1.10.10

参考网站

角数据表

我的Html代码

我的Angular js控制器代码

 angular.module( 'admin.package', [ 'ui.router', 'ui.bootstrap', 'datatables', 'datatables.bootstrap', 'ngResource', 'plusOne' ]).controller('WithAjaxCtrl', WithAjaxCtrl); function WithAjaxCtrl(DTOptionsBuilder, DTColumnBuilder,$http,UserService,localStorageService) { UserService.obj.get('packages/index',localStorageService.get('userkey').token).then(function (results) { if(results.status==200){ var vm = this; vm.dtOptions = DTOptionsBuilder.fromSource(results.data.packages) .withPaginationType('full_numbers'); vm.dtColumns = [ DTColumnBuilder.newColumn('id').withTitle('id'), DTColumnBuilder.newColumn('package_name').withTitle('Packag Name'), DTColumnBuilder.newColumn('amount').withTitle('Amount'), DTColumnBuilder.newColumn('package_duration').withTitle('Amount'), DTColumnBuilder.newColumn('currency').withTitle('validity') ]; console.log(vm.dtColumns); console.log( vm.dtOptions); }else{ alert('You are not a authorized user'); } }, function(reason) { console.log(reason); }); } 

提前致谢

在页面加载时,您将showCase.dtOptionsshowCase.dtColumns传递给datatables指令,但在服务调用完成之后才会声明它们。 一个解决方法是使用ng-if在服务调用之后构造html:

 

然后在您的控制器中,在调用服务之前初始化变量,并在调用完成后更新它:

 app.controller('WithAjaxCtrl', function WithAjaxCtrl(DTOptionsBuilder, DTColumnBuilder, UserService) { var vm = this; vm.authorized = false; UserService.get()... 

这是一个演示。 您可以通过删除ng-if来重现错误。 http://plnkr.co/edit/XZYOEvgy1HoMYGmGdAYj?p=preview