ExtJS错误解决 Cannot read property 'on' of undefined

背景

用ExtJS新写了一个功能,运行时控制台打印错误Cannot read property 'on' of undefined,出错代码位置是Ext.define.bindStoreListener。

分析

根据出错代码可以猜测出与store有关,但是依然没有头绪。对于新技术或未知问题,我只好祭出杀手锏“排除法”,先锁定问题所在。有计划的删除部分代码,再刷新页面尝试。然后,一遍遍重复直到不再报错。

最终,删除了一个combo控件后不再报错。这个控件中有个属性是store,应该是ExtJS在加载此处时出错。于是得出问题所在:页面控件中引用了store,但是Controller的stores属性没有加载。

解决方案

在Controller层添加要用的store。

1 Ext.define('XXX', {
2   extend : 'Ext.app.Controller',
3   ...
4   stores : [ '在此添加store']
5   ...