Я использую JsonQueryRestStore с опцией ClientFilter для кэширования запросов и данных, чтобы разгрузить сервер от повторного запроса xhr для данных, уже отправленных клиенту.
Код, который я написал, работает нормально, за исключением небольшой проблемы. У меня есть фильтрация, выбирающая, где пользователь вводит, и ограничиваю доступные варианты. В этом поле нет определенного регистра, поэтому, набрав «mi», «MI», «Mi», вы получите тот же выбор результата, что и в верхнем регистре. Проблема в том, что даже если я использую опцию: queryOptions: {ignoreCase: true} и/или uppercase: true в поле, похоже, что ClientìFilter игнорирует это и запрашивает сервер для каждой комбинации case, поэтому он кэширует каждую как другую. . То есть для двух букв может быть 4 комбинации: ми, ми, ми, ми
Теперь, если это неправильно обрабатывается ClientFilter, я бы хотел, чтобы все входные данные были в верхнем регистре. Но я не могу заставить его работать. ClientFilter отправляет и кэширует запрос по мере его ввода пользователем, даже если я пытаюсь его преобразовать.
Есть идеи, как я могу это решить?
мой упрощенный код ниже javascript:
dojo.require('dojox.data.FilteringSelect');
dojo.require('dojox.data.ClientFilter');
dojo.require('dojox.data.JsonQueryRestStore');
var fooselect = new dijit.form.FilteringSelect({
id : "fooId",
store: new dojox.data.JsonQueryRestStore({ target: '/fooajax', labelAttribute: 'description', cacheByDefault: true }),
searchAttr : "description",
searchDelay : 300,
autocomplete : true,
uppercase: true,
trim : true,
required : ${required},
queryOptions: {ignoreCase: true}
}, "fooInput");
HTML:
<input id="fooInput">