我知道这个问题已经有几个月了,但我一直在寻找同样的东西,并想我会记录下我是如何解决这个问题的。
旁注:我看到ng-grid-wysiwyg-export.js
插件文件夹中有一个插件,但我没有找到关于它使用的示例或文档,也没有花时间弄清楚,因为......
我确实发现playground.html
ng-grid plugins 文件夹中有一个文件,其中包含 CSV 插件的示例。它演示了如何使用columnOverrides功能,您可以通过opts
参数将其传递给插件构造函数:
$scope.myData = [
{hasThing: false, obj: {a:5, b:6}, name: "Moroni", age: 50, ln: 'sdf'},
{hasThing: true, obj: {a:6, b:7}, ln: "Tiasdfsdfnd", age: 43}
];
var csvOpts = { columnOverrides: { obj: function(o) { return o.a + '|' + o.b; } } };
$scope.gridOptionsBig = {
data: 'myData',
plugins: [new ngGridCsvExportPlugin(csvOpts)],
showFooter: true
};
因此,对于上述问题中的示例,您可以为要应用过滤器的每一列定义覆盖函数,如下所示:
var csvOpts = {
columnOverrides: {
service_date: function(d) { return $filter('date')(d); },
service_code: function(c) { return $filter('myCustomCamelCaseFilter')(c); },
price: function(p) { return $filter('currency')(p); }
}
};
虽然定义这些而不是仅仅从 columnDefs 调用已经定义的 cellFilter 需要做一些额外的工作,但这种方法确实可以让您灵活地让导出的数据与屏幕上显示的数据略有不同......也许更具表现力的日期格式等