datatables 和 ng-repeat 以及 tableExport问题
发布时间:2020-12-17 08:57:09 所属栏目:安全 来源:网络整理
导读:问题描述 datatables 框架和 Angularjs 的 ng-repeat 指令一起使用的时候会出现数据无法在表格中展现的错误,点击下表格的 head ,数据就会消失。在 datatables 的官网也有人问过这个问题 is-there-a-way-to-use-ng-repeat-and-datatables。 错误如图: ng-r
问题描述
解决办法:
总体代码如下: 表格部分的代码 <table id="main" class="table table-bordered" datatable="ng"> <thead> <tr> <th>a</th> <th>b</th> <th>c</th> <th>d</th> <th>e</th> </tr> </thead> <tbody> <tr ng-repeat="item in items track by $index" ng-model="items" on-finish-render="ngRepeatFinished"> <td>{{item.a}}</td> <td>{{item.b}}</td> <td>{{item.c}}</td> <td>{{item.d}}</td> <td>{{item.e}}</td> </tr> </tbody> </table> JS 代码: <script type="text/javascript"> var myapp = angular.module("main",['datatables']); myapp.directive('onFinishRender',function ($timeout) { return { restrict: 'A',link: function (scope,element,attr) { if (scope.$last) { $timeout(function () { scope.$emit(attr.onFinishRender); }); } } } }); myapp.controller("mainCtrl",['$scope','$http',function ($scope,$http) { $scope.trv = {orders: ""}; $scope.errMsg = ""; $scope.isDisabled = false; $scope.items = {}; //调用之后销毁,避免调用两次 var destroyFoo = $scope.$on('ngRepeatFinished',function() { $("table").tableExport(); }); $scope.$on('ngRepeatFinished',function() { destroyFoo(); console.log("test"); }); $scope.test= function () { if ($scope.trv.orders== '') { alert("数据不能为空!"); return; } $scope.isDisabled = true; var bArray = $('#orders').val().replace(/s+/g,","); var cArray = bArray.split(","); var dUnique = $.unique(cArray); console.log(dUnique); var estr = $.map(dUnique,function (val,index) { var str = val; return str; }).join(","); console.log(estr); var data = {items: estr}; var url = "/a/b.json"; console.log(data); $http({ method: "POST",dataType: "json",contentType: 'application/json',url: url,data: data,}).success(function (data) { if (data.success) { $scope.errMsg = ""; $scope.items = $.parseJSON('[' + formatData(data.data) + ']'); alert("查询完成"); } else { $scope.errMsg = data.message; console.log("有问题的数据:" + data.data); $scope.items = data.data; $scope.isDisabled = false; } }).error(function (data) { alert(data); $scope.isDisabled = false; }); }; function formatData(data) { var lastData = []; var pObj = {'a': "",'b': "",'c': "",'d': "",'e': ""}; Object.keys(data).forEach(function (k) { data[k].forEach(function (element) { var vm = JSON.stringify(element); pObj.a = k; pObj.b = element.b; pObj.c = element.c; pObj.d = element.d; pObj.e = element.e; lastData.push(JSON.stringify(pObj)); }); }); return lastData; } }]); </script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |