在 ng-table 中启用分组会删除分页

Enabling grouping in ng-table removes the pagination

我正在使用 ng-table,我 运行 遇到了分组问题。我有它,因此可以通过 select 下拉菜单中的选项启用或禁用分组,但启用分组总是会破坏分页,而在禁用分组时它工作正常。

这是我的列数组中的对象之一的示例:

{
  field: "payeeName",
  title: "Charity",
  sortable: "payeeName",
  filter: {
    payeeName: 'select'
  },
  classes: "td-width-150",
  show: true,
  hideOnExport: true,
  groupable: "payeeName",
  buildTemplate: function(donation, idx) {
    var str = donation.payeeName + '<br/>';
    str += '<small class="text-muted">';
    str += $filter('buildAddressLine')(donation) + '<br/>';
    str += $filter('buildRegistrationId')(donation) + '<br/>';
    if (donation.designation) {
      str += donation.designation;
    }
    str += '</small>';
    return str;
  }
}

以下是打开或关闭分组时出现的行:

<tr class="ng-table-group" ng-show="grouping" ng-repeat-start="group in $groups">
 <td>
    <a href="" ng-click="group.$hideRows = !group.$hideRows">
      <span class="glyphicon" ng-class="{ 'glyphicon-chevron-right': group.$hideRows, 'glyphicon-chevron-down': !group.$hideRows }"></span>
      <strong>{{ group.value }}</strong>
    </a>
  </td>
</tr>
<tr ng-show="grouping" ng-hide="group.$hideRows" ng-repeat="user in group.data" ng-repeat-end>
  <td ng-repeat="col in $columns track by $index" class="{{col.classes}}" {{col.hide}} ng-bind-html="col.buildTemplate(user, $index)"></td>
</tr>
<tr ng-show="!grouping" ng-repeat="user in $data">
  <td ng-repeat="col in cols track by $index" class="{{col.classes}}" {{col.hide}} ng-bind-html="col.buildTemplate(user, $index)"></td>
</tr>

最后,这里是为 table 准备数据的函数。应该知道,在这段代码下面是一个 API 调用,它设置 $scope.donations 等于端点 returns:

var prepData = function(checkFilter) {
  var orderFilter = params.filter();
  // add grid filters to the data we loaded in get data
  var filteredData = params.filter() ? $filter('filter')($scope.donations, params.filter()) : $scope.donations;
  // apply the global filter

  filteredData = $filter('filter')(filteredData, $scope.globalTableFilter);


  var orderedData = params.sorting() ?
    $filter('orderBy')(filteredData, params.orderBy()) :
    filteredData;

  orderedData = $filter('filter')(orderedData, $scope.filterDonation);

  // Prep data for export
  $scope.exportData = angular.copy(orderedData);
  $scope.exportData.forEach(function(e) {
    e.donationDate = $filter('date')(e.donationDate, 'dd/MM/yyyy');
    e.receiptAmount = $filter('currency')(e.receiptAmount);
  });
  // recalc the pagination - MUST PRECEED THE PAGE SLICE

  params.total(orderedData.length);
  $scope.$emit('gotDonations', $scope.orderedData);

  $scope.filterDonations = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
  return $scope.filterDonations;

};

当通过 select 输入启用分组时,它会触发如下所示的函数:$scope.tableDonationParams.group({payeeName: 'asc'})
当通过 select 输入禁用分组时,它会触发:
$scope.tableDonationParams.group({})

正如我所说,只要将分组设置为空白对象,分页就可以正常工作,但在启用时会完全中断。

为了清楚起见,这是我的 table 的图片:http://imgur.com/f6WyksA

我集成了一个名为 angular-dragdrop 的插件,允许我将项目从侧边栏拖到 table 以添加到列对象,也可以将列相互拖动以更改它们定位在 table 上,所以不要让你感到困惑。

感谢您的所有帮助。

我在对组数据进行分页时遇到了同样的问题。所以,我在 getGroups 函数 [ng-table.js].

的末尾添加了这些行
if (!settings.dataOptions.applyPaging) {
    return ngTableDefaultGetData(result, params);
}
return ngTableDefaultGetData.applyPaging(result, params);

使用默认或自定义的分页。