【问题标题】:Extending class dynamically in Extjs在 Extjs 中动态扩展类
【发布时间】:2012-05-05 09:02:35
【问题描述】:

我需要动态扩展类并使用此代码:

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);

我该如何解决?我做错了什么?

提前感谢。

【问题讨论】:

  • key 很可能在调用构造函数之前发生变化。你能再显示一些代码吗?
  • @Pumbaa80,非常感谢!那是个问题。关键是在循环中迭代。现在我有了新的例外“未捕获的类型错误:无法调用未定义的方法'stopEditing'”。你知道是什么原因造成的吗?

标签: javascript extjs extjs3 modx user-defined-literals


【解决方案1】:

您在构造函数中使用的 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多