1

我正在尝试使用覆盖来应用补丁,但我收到“Uncaught TypeError: Cannot read property 'Table' of undefined”,因为在调用脚本时 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;
  }
});
4

1 回答 1

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。

于 2013-06-21T06:02:20.240 回答