【问题标题】:How get Dojo ClientFilter cache queries case insensitive?如何让 Dojo ClientFilter 缓存查询不区分大小写?
【发布时间】:2011-09-20 05:45:45
【问题描述】:

我正在使用带有 ClientFilter 选项的 JsonQueryRestStore 来缓存查询和数据, 为已经发送到客户端的数据卸载一些重复的 xhr 询问的服务器。

我编写的代码运行良好,除了一个小问题。 我有一个过滤选择,用户在其中键入并限制可用的选择。 该字段没有特定大小写,因此键入“mi”、“MI”、“Mi”会得到相同的结果选择全部大写。 问题是,即使我使用该选项: 查询选项:{ignoreCase:真} 和/或大写:在字段上为真,ClientìFilter 似乎忽略了这一点,并为每个案例组合查询服务器,因此它将每个案例组合缓存为不同的组合。 IE 对于两个字母,您可以有 4 种组合:mi、MI、Mi、mI

现在,如果 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">

【问题讨论】:

    标签: caching case-insensitive dojo


    【解决方案1】:

    在 queryOptions 中可以添加缓存键为真值,像这样。

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

    请让我们知道它是否有效。 参考。网址。 http://mikoskay.net/158-client-side-sorting-with-jsonreststore.html

    【讨论】:

    • 和cacheByDefault:true在store上创建时传递的有区别吗?正如您在上面看到的,我使用该选项.. 它缓存查询,但它缓存大小写,以便 MI mi 在服务器上执行,即使数据已经在第一个客户端上。
    • 您可以尝试为 FilteringSelect 提供 ignoreCase: true 而不是 JsonQueryRestStore
    • no 即使使用 ignoreCase: true FilteringSelect 也没有正确缓存。继续对大写 o 小写字符产生影响,并向服务器重复查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多