这是上下文,我有一个可以由用户动态重新加载的网格。由于内容每次都不同,我想在网格的标题中添加网格中存在的元素数。
为此,我想将这个网格后面的商店的"load"事件中继到网格本身。
我想我可以使用 Extjs 中继事件函数,如此处所述
这是我的代码:
initComponent : function(){
var me = this;
me.relayEvents(this.getStore(), ['load'], 'store');
me.callParent();
},
由于我使用的是 MVC 架构,因此事件随后在网格的控制器中处理,如下所示:
init : function() {
this.control({
'genericGrid' : {
storeload: this.setTitle
}
});
},
setTitle : function(grid){
var total=grid.getStore().count();
grid.setTitle('List ('+total+')');
},
但是,当我启动应用程序时,我得到的只是白色页面和错误。
在Chrome下,我得到:
未捕获的类型错误:未定义不是一个函数 ext-all-dev.js:17772
和火狐我得到:
类型错误:item.on 不是一个函数 ext-all-dev.js:17772
在Chrome上探索stackTrace,我发现错误来自relayEvents方法。
有人可以告诉我我做错了什么,或者另一种方式?
在你的 initComponet 函数中交换 me.callParent
和 me.relayEvents
的顺序。在 callParent 之后,应该创建存储,然后 getStore(( 应该返回存储实例。
initComponent : function(){
var me = this;
me.callParent();
me.relayEvents(this.getStore(), ['load'], 'store');
},