Dijit.form.FilteringВыбрать с помощью поиска подстроки

dijit.form.FilteringSelect близок к тому, что мне нужно. Я пробовал много способов сделать то, что хочу, но, будучи начинающим диджитом, я никогда не знаю, пойду ли я в правильном направлении.

Когда я начинаю вводить в FilteringSelect, я вижу только параметры, начиная с того, что я набрал. Как запрос на value + "*"
Мне нужно увидеть любой вариант, который имеет то, что я печатаю где угодно. Как запрос на "*" + value + "*"

Итак, если есть "Apple", "Banana" и "Orange", и я набираю "e", я должен видеть "Apple" и "Orange". Если возможно, в строке поиска подчеркивается: "Appl e", "Orang e"

Мне кажется, мне нужно какое-то умное хранилище данных, но в любом месте я выгляжу как тупик. Я что-то упускаю, или я должен делать это совершенно по-другому?

Ответ 1

Вы хотите использовать атрибут queryExpr:

var f = new dijit.form.FilteringSelect({
 ...
 queryExpr: "*${0}*",
 ...
}, node);

Обратите внимание на * до и после ${0}.

Ответ 2

Эй! Вам нужно добавить queryExpr = "$ {0}" в компонент filteringselect.

По умолчанию это ${0} *, то есть он ищет строки, начинающиеся с того, что вы набрали.

Как подсказка для других, в JSP мне пришлось изменить запрос expr. к запросуExpr = "\ ${0}".

Ответ 3

В нашем проекте мы решили эту проблему с патчем для dojo.data.util.filter переписывания метода patternToRegExp.

Ответ 4

После долгих попыток я смог запустить его, подсказка Мады была правильной, но пропустить * до и после. Правильный queryStr (в JSP) равен '*\${0}*'