在Angular UI Grid中导出为CSV时更改文件名

kir*_*gge 3 angularjs angular-ui-grid

我们在out project项目中使用Angular UI Grid.我需要将当前日期放在文件名中并导出CSV数据.我现在在"导出"按钮上执行的操作点击:

$scope.exportCSV = function () {
     $scope.gridOptions.exporterCsvFilename = getDate() + ".csv";
     $scope.gridApi.exporter.csvExport("all", "visible");
};
Run Code Online (Sandbox Code Playgroud)

问题是文件名只配置一次,在下次点击时不会改变.如何重新设置文件名?

Ale*_*hin 9

要动态更改文件名,需要注入uiGridExporterService服务,然后可以调用接受文件名作为第一个参数的downloadFile函数.

例:

var app = angular.module('app', ['ngAnimate', 'ui.grid', 'ui.grid.selection', 'ui.grid.exporter']);

app.controller('MainCtrl', ['$scope','uiGridExporterConstants','uiGridExporterService', function ($scope,uiGridExporterConstants,uiGridExporterService) {

  $scope.exportCSV = function(){
     var exportService=uiGridExporterService;
     var grid=$scope.gridApi.grid;
     var fileName=getDate() + ".csv";

     exportService.loadAllDataIfNeeded(grid, uiGridExporterConstants.ALL, uiGridExporterConstants.VISIBLE).then(function() {
     var exportColumnHeaders = exportService.getColumnHeaders(grid, uiGridExporterConstants.VISIBLE);
     var exportData = exportService.getData(grid, uiGridExporterConstants.ALL, uiGridExporterConstants.VISIBLE);
     var csvContent = exportService.formatAsCsv(exportColumnHeaders, exportData, grid.options.exporterCsvColumnSeparator);
         exportService.downloadFile(fileName, csvContent, grid.options.exporterOlderExcelCompatibility);
  });

}
}]);
Run Code Online (Sandbox Code Playgroud)

实例:http://plnkr.co/edit/O44fbDiCe6Pb5vNYRVSU?p = preview