4

ちょっとした質問があります。ExtJS 4.1 では、すべてのフォーム フィールドに "Ext.form.Labelable" という mixin を使用してラベルをレンダリングします。すべてのフォーム フィールドのレンダリング テンプレートである labelableRenderTpl を変更して、右側に余分なラベルを追加したいと考えています。ミックスインをオーバーライド/拡張​​するにはどうすればよいですか? mixinを使用するすべてのクラスのlabelableRenderTplをオーバーライドする必要がありますか?

あなたの助けとよろしくお願いします!マヌエル

4

1 に答える 1

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してすべてのフィールドに適用することにより、独自の mixin を作成する必要があります。

オーバーライドの詳細については、こちらを参照してください。(SOコミュニティの一部があなたのケースでこの質問を好まないように思われる場合でも、そこにいくつかの貴重な情報が見つかるかもしれません

アップデート

すでにご想像のとおり、問題はオーバーライドが適用された時点で mixin が既にクラスにコピーされているため、これはすべてタイミングの問題であり、厳密な一致で終了する可能性があります。新しい mixin で実装をオーバーライドすることにより、mixinから継承し、Ext.form.Labelableこの新しい mixin を必要なすべてのクラスに適用することをお勧めします。

于 2013-03-06T12:25:28.547 に答える