我正在尝试使用覆盖来应用补丁,但我得到“未捕获的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;
}
});
答案 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。