2017-02-27 7 views
1

오전 각도 프로젝트에서 UI-GRID를 사용하는 경우 선택한 행의 순서를 추적하는 방법이 있습니까 (사용자가 행을 선택/선택 취소 할 수있게 함) 주문 gridApi.selection.getSelectedRows() 반환은 .Any로 작업하기에 적합하지 않습니다. 아이디어 제발? http://plnkr.co/edit/gD4hiEO2vFGXiTlyQCix?p=preview. (plnkr은 요소를 선택/선택 취소해도 요소가 저장되는 순서를 볼 수 있으므로 문제를 강조하는 데 도움이 될 수 있음)UI Grid에서 선택한 행의 순서를 추적하는 방법은 무엇입니까?

답변

1

Mero.

enter image description here

자바 스크립트/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; 
    }); 
}]); 

기본적인 아이디어는 우리가 push 또는 splice할지 여부에로 rowSelectionChanged 이벤트 기간 동안 선택을 추적하고 row.isSelected로 결정하는 것입니다.

작동하는 Plunker는 http://plnkr.co/edit/lnng9coOQHca3PzOSjQI?p=preview입니다.

호프가 도움이 되었으면 더 궁금한 점이 있으면 알려주세요.