Как сделать запросы кэша Dojo ClientFilter нечувствительными к регистру?

Я использую 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">

person Massimo    schedule 22.06.2011    source источник


Ответы (1)


В queryOptions вы можете добавить ключ кеша с истинным значением, например.

queryOptions="{cache: true,ignoreCase: true}"

Пожалуйста, дайте нам знать, сработало ли это. Ссылка URL. http://mikoskay.net/158-client-side-sorting-with-jsonreststore.html

person Rajkamal Subramanian    schedule 23.06.2011
comment
Отличается ли он от cacheByDefault: true, переданного при создании в магазине? Как вы можете видеть выше, я использую эту опцию... она кэширует запросы, но кэширует с учетом регистра, так что MI mi выполняется на сервере, даже если данные уже находятся в клиенте с первым. - person Massimo; 24.06.2011
comment
можете ли вы попробовать указать ignoreCase: true для FilteringSelect вместо JsonQueryRestStore - person Rajkamal Subramanian; 24.06.2011
comment
нет даже с ignoreCase: true FilteringSelect не кэшируется правильно. продолжает различать символы верхнего и нижнего регистра и повторять запрос к серверу - person Massimo; 30.06.2011