2009-06-12 24 views
22

Me trataron de crear un cuadro combinado simple:¿Qué hace ExtJS ComboBox triggerAction: "all" realmente funciona?

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

pero escrito esta manera se actúa de manera extraña:

  • Cuando se abre por primera vez el pop en el menú desplegable, que ofrece tres opciones.
  • Elija una.
  • Pero cuando después de eso intente cambiar su selección, el menú desplegable solo ofrece una opción: la que seleccionó previamente.

Comparé mi código para el samples en la página principal Ext y descubrieron que la adición de triggerAction: "all" resuelve mi problema:

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

ExtJS documentación para triggerAction no me dice mucho:

La acción a ejecutar cuando se hace clic en el desencadenador. Usar 'all' para ejecutar la consulta especificada por la opción de configuración allQuery (por defecto es 'consulta')

no he especificado la opción allQuery. En realidad, no quiero realizar una consulta al servidor en absoluto.

¿Qué hace realmente esto triggerAction?

Y lo configuro en "all" ¿qué debo hacer realmente cuando solo quiero un combobox estático simple?

Respuesta

22

Después de elegir un elemento, la lista se filtra para que coincida con el valor de texto actual. En su caso, siempre es exactamente el valor elegido, pero es más obvio con valores de caracteres múltiples (consulte el ejemplo de nombres de estado en Ext). Si elimina el valor seleccionado, el menú desplegable volverá a tener todos los valores. triggerAction:'all' significa no filtrar, siempre muestre todos los valores.

+0

Gracias. Ahora lo entiendo. –

+3

Esto tiene sentido ahora, ¡pero esta es una opción realmente mal nombrada! – duma

+0

El motivo del nombre es que la configuración se hereda de 'TriggerField' y, por lo tanto, se usa de forma más genérica fuera de los combos y ni siquiera tiene que relacionarse con el filtrado en otras implementaciones. Pero sí, un alias específico del combo que sea más descriptivo podría ser agradable. –

Cuestiones relacionadas