0
ngTable 문서는 완전한 정보와 샘플 코드를 제공하지 않으므로 따르기가 어렵습니다. 필자는 서버에서 테이블을 동적으로 가져오고 표시하는 코드를 작성했습니다. 그러나 정렬 할 표 머리글을 클릭하면 getData (및 $ http)가 다시 트리거되고 결과는 클릭 후 열이 정렬되지 않지만 표시되는 데이터는 가로로 두 배가됩니다 (예 : 페이지에서 표시된 열은 [id, name]이고, 표 머리글의 열을 클릭하면 [id, name, id, name]이됩니다. 정렬 할 때 ngTableDynamic에 대한 ngTable getData를 중지하여 데이터를 가져옵니다.
<!DOCTYPE html>
<html>
<head lang="en">
<title><%= title %></title>
<meta charset="utf-8">
<script type="text/javascript" src="bower_components/angular/angular.min.js"></script>
<script type="text/javascript" src="bower_components/ng-table/ng-table.min.js"></script>
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="bower_components/ng-table/ng-table.min.css" />
<script>
(function() {
'use strict';
let app = angular.module('myApp', ['ngTable']);
app.controller('demoCtrl', ['$http', 'NgTableParams', function ($http, NgTableParams) {
let ctrl = this;
ctrl.cols = [];
ctrl.rows = [];
ctrl.tableParams = new NgTableParams({}, {
getData: function (params) {
ctrl.xhr = $http({
method: 'GET',
url: '/ng-table-demo/test_data',
}).then(function (rsp) {
let cols = Object.keys(rsp.data[0]);
for(let i = 0; i < cols.length; i++) {
ctrl.cols.push({field: cols[i], title: cols[i], sortable: cols[i], show: true});
}
ctrl.rows = rsp.data;
return ctrl.rows;
}, function (rsp) {
console.log('http failed.');
});
return ctrl.xhr;
}});
}]);
})();
(function() {
"use strict";
angular.module("myApp").run(configureDefaults);
configureDefaults.$inject = ["ngTableDefaults"];
function configureDefaults(ngTableDefaults) {
ngTableDefaults.params.count = 5;
ngTableDefaults.settings.counts = [];
}})();
</script>
</head>
<body>
<div ng-app="myApp" ng-controller="demoCtrl as ctrl" class="container-fluid">
<h2>ng-table-demo</h2>
<table ng-table-dynamic="ctrl.tableParams with ctrl.cols" class="table table-condensed table-bordered table-striped">
<tr ng-repeat="row in $data">
<td ng-repeat="col in $columns">{{row[col.field]}}</td>
</tr>
</table>
</div>
</body>
</html>
내가 울부 짖는 소리와 함께 ctrl.xhr 블록을 둘러싸려고, 그것은 복제 중지하지만 정렬 어쨌든 발생하지 않습니다.
if(ctrl.xhr === undefined) {
ctrl.xhr = $http...;
}
return ctrl.xhr;
어떤 실수를 했습니까?