从 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 的下一个版本时,你只需要检查一个位置即可查看哪些错误修复可以删除。