2011-07-14 7 views
1

カスタムComboBoxコントロールを作成しようとしています。ExtJS - ComboBoxのカスタム構造を作成する

[<-] [ --------------- V ] [->] 

これらのボタンは、「次へ」および「前」になり、ユーザーはすぐにドロップダウンメニューでオプションを切り替えることができます(:コントロールは、コンボボックス自体のいずれかの側にこのような何かを、ボタンを持っていますそれぞれ上下に移動する)。

私はComboBoxのdefaultAutoCreate設定を上書きしようとしましたが、奇妙な動作が起こっています。ここで私はこれまで試したものです:

initComponent: function() { 

    // default ComboBox structure 
    var comboStructure = { 
     tag: 'span', 
     children: [ 
      { tag: 'a', cls: 'nav prev', html: 'Previous' }, 
      { tag: 'input', type: 'text', size: '24', autocomplete: 'off' }, 
      { tag: 'a', cls: 'nav next', html: 'Next' } 
     ] 
    }; 

    console.log(comboStructure); 

    var config = { 
     triggerAction: 'all', 
     lazyRender: true, 
     mode: 'local', 
     store: new Ext.data.ArrayStore({ 
      fields: [ 
       'myId', 
       'displayText' 
      ], 
      data: [[1, 'Banner #1'], [2, 'Banner #2']] 
     }), 
     valueField: 'myId', 
     displayField: 'displayText', 
     defaultAutoCreate: comboStructure 
    }; 

    Ext.apply(this, config); 

    IbwUi.controls.PreviewBannerSelectDropdown.superclass.initComponent(this); 

} 

comboStructureの第二「子」は、実際にコンボボックスのために初期化されるデフォルト値である(これは、すべてのカスタムクラス拡張コンボボックスの内側にある)、私が見てソースコードコードがエラーなしで動作しますが、コンボ自体のレンダリングを持ついくつかの奇妙な行動があります、ここを参照してください:

Weird DOM display

それはレンダリング時にコンボボックスのまわりで私のカスタム要素を追加する方法上の任意のアイデア?

答えて

1

このようにしないでください。代わりに、3つのコンポーネントすべてを、必要なロジックを実装するコンテナクラスに入れます。

+0

私はこれを行うことができました。おそらくもっと簡単ですが、なぜこのソリューションがうまくいかないのか不思議です。私はComboBoxの "矢"がデフォルトの構造の一部ではないように見えることを知りました。 – dmackerman

関連する問題