students - dojo karate do
dijit.form.FilteringSelect con búsqueda de subcadenas (4)
dijit.form.FilteringSelect está cerca de lo que necesito. He intentado muchas maneras de hacer lo que quiero, pero siendo un principiante nunca sé si voy en la dirección correcta.
Cuando empiezo a escribir en un FilteringSelect, solo veo las opciones que comienzan con lo que escribí. Como una consulta sobre el value + "*"
Lo que necesito es ver cualquier opción que tenga lo que escribo en cualquier lugar. Como una consulta en "*" + value + "*"
Entonces, si hay "Apple", "Banana" y "Naranja", y escribo "e", debería ver "Apple" y "Naranja". Si es posible, con la cadena de búsqueda enfatizada: "Appl e ", "Orang e "
Creo que necesito un almacenamiento inteligente de datos, pero donde quiera que vaya parece un callejón sin salida. ¿Me estoy perdiendo algo, o debería hacer esto de una manera completamente diferente?
En nuestro proyecto, dojo.data.util.filter
este problema con un parche para dojo.data.util.filter
sobrescribir el método patternToRegExp
.
¡Oye! Necesita agregar queryExpr = " $ {0} " al componente filterselecting.
Por defecto, es $ {0} *, lo que significa que busca cadenas que comiencen con lo que escribiste.
Como una pista para otros, en JSP, tuve que cambiar la consulta expr. para consultarExpr = " / $ {0} ".
Desea utilizar el atributo queryExpr
:
var f = new dijit.form.FilteringSelect({
...
queryExpr: "*${0}*",
...
}, node);
Observe el * antes y después de los $ {0}.
Después de mucho tiempo tratando de hacerlo funcionar, el consejo de Mada fue correcto, pero omite el * antes y el después. El queryStr correcto (en JSP) es ''*/${0}*''