2013-03-06 61 views
4

我有一個小問題: ExtJS的4.1採用了一種名爲「Ext.form.Labelable」爲所有表單域呈現標籤混入。我想更改所有表單字段的labelableRenderTpl,即渲染模板,以在右側添加額外的標籤。 我如何覆蓋/ exend一個mixin?它甚至有可能或者我必須重寫所有使用mixin的類的labelableRenderTpl?ExtJS的4.1:覆蓋混入

THX的幫助和最誠摯的問候! 曼努埃爾

回答

6

您可以將覆蓋爲Ext.form.Labelable這裏

Ext.override(`Ext.form.Labelable`, { 
    labelableRenderTpl: 'Your Template' 
}); 

這是未經測試,但它應該工作造成一個mixin是像任何其他類中定義。你需要知道的是,現在所有類,使用此混入將使用新的模板。在lableable這個名單的情況下,短

  • Ext.form.FieldContainer
  • Ext.form.field.Base
  • Ext.form.field.HtmlEditor

如果你不」不想改變它所有你需要通過擴展Ext.form.Labelable創建自己的例如混入,並覆蓋Ext.form.field.Base將其應用到各個領域。

您可能會發現有關重寫here一些更多的信息。 (即使一些SO社會似乎不喜歡你的情況下,這個問題你可能會發現在那裏一些有價值的信息)

更新

正如你已經猜到的問題是混入了已經複製到課程的時間倍率得到應用,所以這是所有關於時間,可能會在一個艱難的比賽結束。我建議你從Ext.form.Labelable混入繼承和運用這個新的混入到你需要重寫你的新的mixin實施的所有類。

+0

Hi和非常感謝你的回答。不幸的是,它不能用'Ext.override'來覆蓋mixin類。它不會影響'FieldContainer','Base'和'HtmlEditor'。我想這是因爲mixin已經應用到這個類,當我重寫混合?我想唯一的解決方法是直接覆蓋類中的mixin方法? – mesx 2013-03-07 08:51:29

+1

@mesx如果已經看過,我貼你就會知道,當它在短短的混合不能覆蓋一個mixin方法的鏈接。現在我測試了它,我必須承認,這似乎是不可能覆蓋一個mixin。這種工作既沒有覆蓋也沒有原型。這是一個非常奇怪的行爲......我稍後會回頭看看並給你反饋。 – sra 2013-03-07 09:37:08

+0

非常感謝你! – mesx 2013-03-08 12:20:22