ExtJS创建柱状图配置axes时出现c is not a constructor报错
问题原因
这个Uncaught TypeError: c is not a constructor报错是图表轴类未按需加载导致的。
Ext JS图表组件默认采用按需加载机制,你在axes配置中使用了numeric(数值轴)和category(分类轴)两类轴,但对应的实现类没有被引入项目,框架运行时找不到对应构造函数就会抛出这个异常。这和你观察到的现象完全匹配:注释掉axes配置时不需要加载轴类,代码就能正常运行;普通表格组件不依赖图表轴相关类,所以相同数据可以正常加载到表格中。
修复方案
根据你的项目引入方式二选一操作即可:
- Sencha Cmd构建的项目
在使用图表的视图、控制器或者应用的requires配置段中,补上缺失的轴类依赖:
保存后重新执行构建命令,或者等待开发环境热重载即可。requires: [ 'Ext.chart.CartesianChart', 'Ext.chart.series.Bar', // 补充以下两个轴类依赖 'Ext.chart.axis.Numeric', 'Ext.chart.axis.Category' ] - 直接脚本引入的项目
确认你已经在页面中引入了对应Ext JS版本的charts包脚本,不要只引入核心框架JS文件,缺少ext-charts.js也会导致这个问题。
其他提示
你贴的测试代码中,图表绑定的是硬编码的测试store,等轴加载问题修复后,把图表的store配置替换为你自己处理接口数据生成的storeCost,同时同步调整axes的fields、series的xField/yField配置,匹配你实际的字段名就能正常渲染真实数据。
内容的提问来源于stack exchange,提问作者Joey Kingston
相关产品推荐
相关产品推荐

