ui 网格返回行的顺序与它们被选中的顺序相同?
ui grid returning rows in the same order they are selected?
您好,我在 angularjs
项目中使用 UIgrid,当我调用方法 gridApi.selection.getSelectedRows()
来获取选定的行时,它 returns 一个包含所有行但顺序随机的数组.理想情况下,我希望按照它们被选择的相同顺序获取行(就好像 gridApi.selection.getSelectedRows()
由队列支持)。知道如何实现吗?
这个 link to plunker 显示了问题 http://plnkr.co/edit/gD4hiEO2vFGXiTlyQCix?p=preview
我认为我在那里使用的 angular 版本有一个错误,如果您将 plnkr 中的版本升级到 1.6.1,它将按预期运行
你可以自己实现队列。像
$scope.gridOnRegisterApi = function(gridApi) {
gridApi.selection.on.rowSelectionChanged($scope, function(row) {
var selections =gridApi.selection.getSelectedRows();
// add sorted
selections.forEach(function(s){
if ($scope.mySelections.indexOf(s) === -1) {
$scope.mySelections.push(s);
}
});
// remove the ones that are not selected (use for to modify collection while iterating)
for (var i = $scope.mySelections.length; i >0; i--) {
if (selections.indexOf($scope.mySelections[i]) === -1) {
$scope.mySelections.splice(i, 1);
}
}
console.log($scope.mySelections);
row.entity.firstSelection = false;
if (row.isSelected) row.entity.firstSelection = (gridApi.selection.getSelectedCount() == 1);
});
};
您好,我在 angularjs
项目中使用 UIgrid,当我调用方法 gridApi.selection.getSelectedRows()
来获取选定的行时,它 returns 一个包含所有行但顺序随机的数组.理想情况下,我希望按照它们被选择的相同顺序获取行(就好像 gridApi.selection.getSelectedRows()
由队列支持)。知道如何实现吗?
这个 link to plunker 显示了问题 http://plnkr.co/edit/gD4hiEO2vFGXiTlyQCix?p=preview
我认为我在那里使用的 angular 版本有一个错误,如果您将 plnkr 中的版本升级到 1.6.1,它将按预期运行
你可以自己实现队列。像
$scope.gridOnRegisterApi = function(gridApi) {
gridApi.selection.on.rowSelectionChanged($scope, function(row) {
var selections =gridApi.selection.getSelectedRows();
// add sorted
selections.forEach(function(s){
if ($scope.mySelections.indexOf(s) === -1) {
$scope.mySelections.push(s);
}
});
// remove the ones that are not selected (use for to modify collection while iterating)
for (var i = $scope.mySelections.length; i >0; i--) {
if (selections.indexOf($scope.mySelections[i]) === -1) {
$scope.mySelections.splice(i, 1);
}
}
console.log($scope.mySelections);
row.entity.firstSelection = false;
if (row.isSelected) row.entity.firstSelection = (gridApi.selection.getSelectedCount() == 1);
});
};