Extjs覆盖 - 在覆盖之前加载所需的文件

时间:2013-06-21 04:16:24

标签: extjs override

我正在尝试使用覆盖来应用补丁,但我得到“未捕获的TypeError:无法读取未定义的属性'表',因为Ext.view.Table文件在脚本被调用时尚未完成加载。在调用此文件之前,如何确保加载所需的文件?

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 个答案:

答案 0 :(得分:1)

您可以定义一个处理所有覆盖的类,例如

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

您可以在app.js中需要此类,并在加载框架后在app.launch()中调用doOverride。此外,您可以要求在Overrider的require-config中覆盖您要覆盖的特定TargetClass。