2011-02-16 60 views
8

有沒有辦法配置ExtJS(通過Ext.override?),以便Ext.form.Action.Submit的submitEmptyText配置選項默認爲false,而不是true?如何覆蓋Ext.form.Action.Submit的默認配置選項?

我知道有可能重寫類的方法,但我不知道默認的配置屬性,有人可能會認爲,因爲配置選項主要是控制檯日誌記錄的公共屬性Ext.form.Action.Submit.submitEmptyText會輸出false但它是未定義的。

我成功的一種方法是爲run方法創建一個攔截器,但基本上使submitEmptyText配置選項無用,因爲它不能通過傳遞給構造函數的配置對象進行設置。

Ext.form.Action.Submit.prototype.run = Ext.form.Action.Submit.prototype.run.createInterceptor(function() { 
    this.options.submitEmptyText = false; 
}); 

回答

8

[編輯了幾次,但是這對我的作品]

submitEmptyText實際上不是Ext.form.Action.Submit原型的屬性 - 它只是檢查在運行功能「this.options」對象的一個​​屬性 - 它本身是在超類上定義的,Ext.form.Action

如果您希望它默認爲全局false,那麼只需將它設置爲Ext的options屬性即可.form.Action建成後

Ext.form.Action.prototype.constructor = Ext.form.Action.prototype.constructor.createSequence(function() { 
    Ext.applyIf(this.options, { 
     submitEmptyText:false 
    }); 
}); 

這很棘手,因爲Ext.form.Action將this.options設置爲其構造函數中的空對象,所以在構造函數執行後必須訪問該選項屬性,這就是爲什麼createSequence在這種情況下起作用的原因。

+0

這按預期工作!事實上,submitEmptyText屬性沒有像組件配置選項那樣實現,這就是爲什麼Ext.override不起作用,另一方面這完美地工作!謝謝! – ChrisR 2011-03-01 07:41:27

1

如果你想submitEmptyTextExt.form.Action.submit是假的,只是將其設置在配置當您創建Ext.form.Action.submit對象。

var submit = Ext.form.Action.submit({ 
    submitEmptyText: false 
}); 
+0

Ext.override不上Ext.form.Action(S)在這種情況下工作, submitEmptyText屬性在Ext中以不同的方式實現。 – ChrisR 2011-03-01 07:43:00

3

如果你想覆蓋Ext.form.Action.submit()爲所有情況下,那麼爲什麼不直接使用Ext.override?

Ext.override(Ext.form.Action.submit, { 
    submitEmptyText: false 
}); 
+1

Ext.override在這種情況下不適用於Ext.form.Action(s),submitEmptyText屬性在Ext中以不同的方式實現。 – ChrisR 2011-03-01 07:42:15

0

可能:

Ext.form.Action.submit.prototype.submitEmptyText = false. 

這有助於我:

Ext.Window.prototype.constrainHeader = true;