2011-07-14 32 views
1

我正在試圖創建一個自定義組合框控件。該控件將有一個按鈕的組合框本身的兩側,這樣的事情:ExtJS - 爲組合框創建自定義結構

[<-] [ --------------- 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

如何添加身邊時,它呈現的ComboBox我的自定義元素的任何想法?

回答

1

不要這樣做。而是將所有三個組件放入一個實現所需邏輯的容器類中。

+0

我可以做到這一點,它可能更容易,但我仍然想知道爲什麼這個解決方案不起作用。我注意到ComboBox的「箭頭」似乎不是默認結構的一部分......這就是爲什麼後來添加它的原因。 – dmackerman