2009-06-12 3 views
22

Ho cercato di creare un semplice ComboBox:Che cosa fa triggerAction ExtJS ComboBox: "all" fa davvero?

var combo1 = new Ext.form.ComboBox({ 
    store: [1,2,3], 
    renderTo: document.body 
}); 

ma scritto in questo modo agisce strano:

  • Alla prima comparsa volta apre il menu a discesa, offre tre scelte.
  • Si sceglie uno.
  • Ma quando provate a modificare la selezione, il menu a discesa offre solo una scelta, quella selezionata in precedenza.

ho paragonato il mio codice al samples su Ext homepage e ha scoperto che l'aggiunta di triggerAction: "all" risolve il mio problema:

var combo2 = new Ext.form.ComboBox({ 
    triggerAction: "all", 
    store: [1,2,3], 
    renderTo: document.body 
}); 

ExtJS documentazione per triggerAction non mi dice molto:

L'azione da eseguire quando viene fatto clic sul trigger. Usa 'tutti' per eseguire la query specificata l'opzione di configurazione allQuery (default 'query')

non ho specificato l'opzione allQuery. In realtà, non voglio affatto eseguire una query sul server.

Quindi cosa fa veramente questo triggerAction?

E lo sta impostando su "all" davvero cosa dovrei fare quando voglio solo una semplice combo statica?

risposta

22

Dopo aver scelto un elemento, l'elenco viene filtrato in modo che corrisponda al valore di testo corrente. Nel tuo caso, è sempre esattamente il valore scelto, ma è più ovvio con valori a più caratteri (vedi l'esempio dei nomi di stato in Ext). Se elimini il valore selezionato, il menu a discesa tornerà ad avere tutti i valori. triggerAction:'all' significa non filtrare, mostra sempre tutti i valori.

+0

Grazie. Ora capisco. –

+3

Questo ha senso ora, ma questa è un'opzione davvero poco nominata! – duma

+0

Il motivo del nome è che la configurazione è ereditata da "TriggerField" e quindi viene usata in modo più generico al di fuori delle combo e non deve nemmeno riguardare il filtraggio in altre implementazioni. Ma sì, un alias specifico della combinazione che è più descrittivo potrebbe essere bello. –