2013-06-21 71 views
1

我想使用覆蓋應用修補程序,但我得到「Uncaught TypeError:無法讀取未定義的屬性'表',因爲Ext.view.Table文件尚未完成加載在腳本被調用的時候。如何在調用之前確保所需的文件已加載?Extjs覆蓋 - 覆蓋之前加載所需的文件

Ext.define('CSnet.overrides.Table', { 
    override: 'Ext.view.Table', 
    getRowStyleTableElOriginal: Ext.view.Table.prototype.getRowStyleTableEl, 
    getRowStyleTableEl: function() { 
    var el = this.getRowStyleTableElOriginal.apply(this, arguments); 

    if (!el) { 
     el = { 
     addCls: Ext.emptyFn, 
     removeCls: Ext.emptyFn, 
     tagName: {} 
     } 
    } 

    return el; 
    } 
}); 

回答

1

您可以定義一個處理所有覆蓋的類,例如,

Ext.define('YourApp.Overrider',{ 
    requires: ['TargetClass'], 
    doOverride: function() { 
     Ext.define('CSnet.overrides.Table', { 
     override: 'Ext.view.Table', 
     // snip 
     }); 
    } 
}); 

你可以要求這個類在app.js,並呼籲doOverride在app.launch(),框架已經加載之後。另外,您可以在Overrider的require-config中要求您要覆蓋的特定TargetClass。

+0

謝謝,但我正在尋找更「ext」的方式(使用覆蓋配置)。 – Brett

+0

我覺得這很漂亮「Exty」了。 – Christoph