從 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 的下一個版本時,你只需要檢查一個位置即可檢視哪些錯誤修復可以刪除。