从 Bug 修复中分离覆盖
在 ExtJS 中,你可以覆盖几乎任何框架方法并将其替换为你自己的方法。这允许你修改现有类而无需直接修改 ExtJS 源代码。
有时,你可能希望增强现有类或在类上提供合理的默认属性。
例如,你可能希望所有模型数据字段都允许空值。
Ext.define('MyApp.override.DataField', {
override: 'Ext.data.field.Field',
allowNull: true
});
在其他情况下,你需要修复框架中已破坏的内容。
以下是使用文档修复错误的示例。请注意,classname 包含 fix
而不是 override
。实际名称并不重要,但分离是。
Ext.define('MyApp.fix.FieldBase', {
override: 'Ext.form.field.Base',
/**
* Add a description of what this fix does.
* Be sure to add URLs to important reference information!
*
* You can also include some of your own tags to help identify
* when the problem started and what Sencha bug ticket it relates to.
*
* @extversion 5.1.1
* @extbug EXTJS-15302
*/
publishValue: function () {
this.publishState('value', this.getValue());
}
});
现在,当需要升级到 ExtJS 的下一个版本时,你只需要检查一个位置即可查看哪些错误修复可以删除。