如何跟踪UI-Grid中所选行的顺序?

时间:2017-02-27 12:15:15

标签: angularjs angular-ui-grid ui-grid

AM在角度项目中使用UI-GRID我想知道是否有办法跟踪所选行的顺序(允许用户选择/取消选择行) 订单gridApi.selection.getSelectedRows()返回不适合使用。有什么想法吗? http://plnkr.co/edit/gD4hiEO2vFGXiTlyQCix?p=preview。 (plnkr可能有助于突出显示问题,如果您随机选择/取消选择元素,您将看到元素保存的顺序)

1 个答案:

答案 0 :(得分:1)

我相信这可能接近你想要的,Mero。

enter image description here

JavaScript / AngularJS控制器:

var app = angular.module('app', ['ui.grid', 'ui.grid.selection']);
app.controller('MainCtrl', ['$scope', '$http', function($scope, $http) {
  $scope.mySelections = [];
  $scope.mySelectionsInOrder = [];
  $scope.gridOnRegisterApi = function(gridApi) {
    gridApi.selection.on.rowSelectionChanged($scope, function(row) {
      $scope.mySelections = gridApi.selection.getSelectedRows();
      if (row.isSelected) {
        $scope.mySelectionsInOrder.push(row.entity);
      } else {
        $scope.mySelectionsInOrder.splice($scope.mySelectionsInOrder.indexOf(row.entity), 1);
      }
      console.log($scope.mySelections);
    });
  };
  $scope.gridOptions = {
    enableSelectAll: true,
    enableRowSelection: true,
    enableRowHeaderSelection: false,
    enableFullRowSelection: true,
    showGridFooter: true,
    onRegisterApi: $scope.gridOnRegisterApi
  }
  $http.get('data.json')
    .then(function(response) {
      $scope.gridOptions.data = response.data;
    });
}]);

基本想法是在rowSelectionChanged事件期间跟踪选择,并使用row.isSelected确定我们应该push还是splice

这是一个工作的Plunker,http://plnkr.co/edit/lnng9coOQHca3PzOSjQI?p=preview

希望这有帮助,如果您有任何其他问题,请与我联系。