我需要动态扩展类并使用以下代码:
Calc.grid.Table["Table"+key] = function(config) {
config = config || {};
Ext.applyIf(config,{
id: 'calc-grid-table'+key
,baseParams: {
action: 'mgr/calc/calcGetTable'+key
,query: 'Calc'+key
}
});
Calc.grid.Table["Table"+key].superclass.constructor.call(this,config)
};
Ext.extend(Calc.grid.Table["Table"+key],Calc.grid.Table);
Ext.reg('calc-grid-table'+key,Calc.grid.Table["Table"+key]);
但它给了我一个错误:
Uncaught TypeError: Cannot read property 'superclass' of undefined
我尝试将其更改为
this.superclass.constructor.call(this,config)
但错误是
Uncaught SyntaxError: Unexpected identifier
问题在于动态文字。当我这样做时,它工作正常
Calc.grid.Table.Table21 = function(config) {
config = config || {};
Ext.applyIf(config,{
id: 'calc-grid-table'+21
,baseParams: {
action: 'mgr/calc/calcGetTable'+21
,query: 'Calc'+21
}
});
Calc.grid.Table.Table21.superclass.constructor.call(this,config)
};
Ext.extend(Calc.grid.Table.Table21,Calc.grid.Table);
Ext.reg('calc-grid-table'+21,Calc.grid.Table.Table21);
我该如何解决?我做错了什么?
提前完成。
答案 0 :(得分:0)
你的构造函数中使用的key
变量没有作用于该函数,因此可以在调用构造函数之前更改它。您可以使用Ext的createDelegate
将变量绑定到函数,以便它不会改变您:
Calc.grid.Table["Table"+key] = function(key, config) {
config = config || {};
Ext.applyIf(config,{
id: 'calc-grid-table'+key
,baseParams: {
action: 'mgr/calc/calcGetTable'+key
,query: 'Calc'+key
}
});
Calc.grid.Table["Table"+key].superclass.constructor.call(this,config)
}.createDelegate(this, [key], 0);