在 angular ui-grid 中选择一行时仅获取可见列
Get only visible columns when selecting a row in angular ui-grid
我想在 angular-ui 网格中 select 一行并将该行复制到剪贴板。
这是我的代码:
$scope.copySelection = function() {
$scope.retainSelection = $scope.gridApi.selection.getSelectedRows();
alert(JSON.stringify($scope.retainSelection));
var input = document.createElement("input");
input.type = "text";
document.getElementsByTagName('body')[0].appendChild(input);
input.value = JSON.stringify($scope.retainSelection);
input.select();
document.execCommand("copy");
input.hidden = true;
$scope.gridApi.selection.clearSelectedRows();
};
笨蛋:http://plnkr.co/edit/dcj7DUWHyA3u1bouxRhI?p=preview
但是,我只想复制可见的列,但我得到了 JSON 中的所有列。我不想要隐藏的列。我怎么做?请帮忙。
您可以根据所选列/可见列调整列。你可以有这样的代码 -
$scope.copySelection = function() {
$scope.retainSelection =angular.copy($scope.gridApi.selection.getSelectedRows());
angular.forEach($scope.retainSelection,function(value,key){
var columndef=angular.copy( $scope.gridOptions.columnDefs);
for (var property in value) {
if (!(value.hasOwnProperty(property) && columndef.filter(function(a){return a.name.split('.')[0]===property}).length>0 )) {
delete value[property];
}
}
});
alert(JSON.stringify($scope.retainSelection));
var input = document.createElement("input");
input.type = "text";
document.getElementsByTagName('body')[0].appendChild(input);
input.value = JSON.stringify($scope.retainSelection);
input.select();
document.execCommand("copy");
input.hidden = true;
$scope.gridApi.selection.clearSelectedRows();
};
查找更新的 Plunker Here
希望能解决您的问题!
我想在 angular-ui 网格中 select 一行并将该行复制到剪贴板。
这是我的代码:
$scope.copySelection = function() {
$scope.retainSelection = $scope.gridApi.selection.getSelectedRows();
alert(JSON.stringify($scope.retainSelection));
var input = document.createElement("input");
input.type = "text";
document.getElementsByTagName('body')[0].appendChild(input);
input.value = JSON.stringify($scope.retainSelection);
input.select();
document.execCommand("copy");
input.hidden = true;
$scope.gridApi.selection.clearSelectedRows();
};
笨蛋:http://plnkr.co/edit/dcj7DUWHyA3u1bouxRhI?p=preview
但是,我只想复制可见的列,但我得到了 JSON 中的所有列。我不想要隐藏的列。我怎么做?请帮忙。
您可以根据所选列/可见列调整列。你可以有这样的代码 -
$scope.copySelection = function() {
$scope.retainSelection =angular.copy($scope.gridApi.selection.getSelectedRows());
angular.forEach($scope.retainSelection,function(value,key){
var columndef=angular.copy( $scope.gridOptions.columnDefs);
for (var property in value) {
if (!(value.hasOwnProperty(property) && columndef.filter(function(a){return a.name.split('.')[0]===property}).length>0 )) {
delete value[property];
}
}
});
alert(JSON.stringify($scope.retainSelection));
var input = document.createElement("input");
input.type = "text";
document.getElementsByTagName('body')[0].appendChild(input);
input.value = JSON.stringify($scope.retainSelection);
input.select();
document.execCommand("copy");
input.hidden = true;
$scope.gridApi.selection.clearSelectedRows();
};
查找更新的 Plunker Here
希望能解决您的问题!