使用自定义外部按钮导出AmCharts图表遇构造函数错误求助
解决AmCharts自定义导出按钮报错
TypeError: AmCharts.AmExport is not a constructor的问题 你猜的没错,这个错误完全是版本差异导致的!你参考的示例用的是AmCharts 3早期的导出模块(amexport_combined.js),而你现在用的是新版的导出插件(export.js),两者的API已经完全不一样了——新版早就移除了AmCharts.AmExport这个构造函数,所以直接调用会报错。
正确的实现方式(适配新版export.js)
新版导出插件已经把导出功能整合到图表实例里了,不需要手动创建导出对象,直接调用图表实例的导出方法即可:
1. 先确保图表初始化时开启导出功能
在图表配置里加上export选项(即使你要隐藏默认导出按钮,也需要开启enabled: true):
chart = AmCharts.makeChart("chart_chart", { // 你的图表基础配置(数据、坐标轴、系列等) export: { enabled: true, menu: [] // 隐藏默认的导出菜单,因为你用自定义按钮 } });
2. 修改自定义按钮的点击事件代码
直接用图表实例的export.to().download()方法来触发导出:
$('body').on('click', '#chart-selector .dropdown-item', function(e) { var exportFormat = $(this).data('click'); // 根据格式触发对应导出操作 if (exportFormat === 'PRINT') { // 打印单独处理更友好 chart.export.print(); } else { chart.export.to(exportFormat).download(); } });
或者你也可以用全局方法AmCharts.exportChart,效果是一样的:
$('body').on('click', '#chart-selector .dropdown-item', function(e) { var exportFormat = $(this).data('click'); AmCharts.exportChart(chart, { format: exportFormat }); });
为什么旧代码不行?
早期的AmCharts导出功能是独立的AmExport模块,需要手动实例化并绑定到图表上;但后来的版本把导出功能整合进了核心图表API,简化了调用方式,同时移除了旧的AmCharts.AmExport构造函数,所以你用旧写法自然会报错。
额外注意事项
- 确保
export.js的引入路径正确,你当前的路径amcharts-3.21.12/plugins/export/export.js是对的 - 如果需要导出PDF、XLSX等格式,确认是否引入了对应的依赖文件(新版
export.js通常会打包必要的依赖,但如果遇到导出失败,可以检查插件目录下的其他文件,比如pdfmake.js、xlsx.js等是否需要额外引入)
内容的提问来源于stack exchange,提问作者user756659
相关产品推荐
相关产品推荐

