You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular UI Grid:如何获取表格排序后的数据

获取Angular UI Grid排序后的数据

当然可以拿到排序后的数据集!Angular UI Grid确实会在内部维护一份经过排序、过滤或分页处理后的视图数据副本,我们可以通过Grid提供的API轻松获取这份数据,下面是具体的实现方法:

1. 先保存Grid API实例

首先要确保你在配置Grid时,把Grid的API实例保存下来,这样后续才能调用相关方法。通常是在gridOptions的onRegisterApi回调中处理:

$scope.gridOptions = {
  columnDefs: [/* 你的列配置 */],
  data: /* 你的原始数据源 */,
  onRegisterApi: function(gridApi) {
    // 将API保存到$scope或全局服务中,方便后续调用
    $scope.gridApi = gridApi;
  }
};

2. 手动获取排序后的数据

当需要主动获取当前排序后的视图数据时,可以使用getVisibleRows()方法,该方法返回当前页面可见的行对象数组,每个行对象的entity属性就是对应的数据条目。我们可以通过map方法提取出纯数据数组:

// 获取当前视图中排序后的纯数据数组
var sortedData = $scope.gridApi.core.getVisibleRows().map(function(row) {
  return row.entity;
});
// 可以在这里使用sortedData做后续操作,比如打印、导出等
console.log("排序后的数据:", sortedData);

3. 监听排序事件自动获取数据

如果你想在用户每次完成排序操作后,自动获取最新的排序数据,可以监听Grid的sortChanged事件:

$scope.gridApi.core.on.sortChanged($scope, function(grid, sortColumns) {
  // 排序完成后触发此回调
  var sortedData = $scope.gridApi.core.getVisibleRows().map(row => row.entity);
  console.log("排序更新后的数据集:", sortedData);
  // 在这里加入你的业务逻辑,比如更新统计数据、导出数据等
});

4. 获取全量排序后的数据(忽略分页)

如果你的Grid开启了分页功能,getVisibleRows()只会返回当前页的数据。如果需要获取全量的排序后数据(所有分页的数据),可以调用Grid内部的排序方法:

// 获取全部数据排序后的结果,不受分页影响
var fullSortedData = $scope.gridApi.grid.sorting.sortData($scope.gridOptions.data);
console.log("全量排序后的数据:", fullSortedData);

以上方法在Angular UI Grid 3.x(适配Angular 1.x的稳定版本)中都能正常工作,你可以根据自己的业务场景选择对应的方式~

内容的提问来源于stack exchange,提问作者Prashanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:35:43