me ocurrió otra solución que se ve aún más simple y una prueba rápida revela que no hay efectos secundarios:
podemos dejar lógica Combobox intacto sino simplemente ocultar el elemento seleccionado a través de CSS:
.x-boundlist-selected {
display: none;
}
Y voila, ¡no vemos el elemento seleccionado! No sé qué tan confiable esto sería en el código de producción, pero todavía vale la pena considerar, creo ...
UPDATE. Aquí está la solución completa si desea controlar este comportamiento a través de la bandera de configuración del cuadro combinado:
Ext.define('My.ComboBox', {
extend: 'Ext.form.field.ComboBox',
/**
* @cfg {Boolean} hideActive=true
* When true, hides the currently selected value from the dropdown list
*/
hideActive: true,
/**
* Internal method that creates the BoundList
*/
createPicker: function() {
var picker = this.callParent(arguments);
// honor the hideActive flag
if(this.hideActive) {
picker.addCls('x-boundlist-hideactive');
}
return picker;
}
});
En algún lugar de tu CSS:
.x-boundlist-hideactive .x-boundlist-selected {
display: none;
}
ACTUALIZACIÓN 2. encontrado un problema con la interfaz de usuario ¡mi acercamiento!
Ocultar el elemento seleccionado de la lista desplegable introduce una peculiaridad en la navegación por el teclado: aunque el elemento está oculto visualmente, todavía existe y Ext lo seleccionará cuando presione las teclas ARRIBA/ABAJO. Visualmente, eso significa que su selección desaparecerá en algún momento y tendrá que presionar ARRIBA/ABAJO una vez más para volver a colocarla en el siguiente elemento visible.
Hasta ahora no he podido encontrar una solución fácil para esto. Mi mejor opción sería modificar itemSelector
de la lista encuadernada (que es una Vista de datos), configurándola en algo como .x-boundlist-item:not(.x-boundlist-selected)
para que el elemento seleccionado no entre en la consulta.
Mientras el selector en sí funciona, no resuelve el problema, porque la vista realiza esta consulta de selección antes de las clases adicionales (incluyendo la clase de elemento seleccionado) obtener aplicado a los elementos (esto ocurre en Ext.view.AbstractView.refresh().
además, esta solución provoca una mala colocación de la lista desplegable cuando aparece encima del cuadro combinado!
tenía la sensación de que mi enfoque era demasiado fácil para trabajar sin problemas :)
Preguntada la misma pregunta en el foro de Sencha: http://www.sencha.com/forum/showthread.php?241063-Combobox-hide-selected-value-from-dropdown-list&p=882210 –