【问题标题】:ExtJS 3.4 - Successive combobox searches/store reloadsExtJS 3.4 - 连续的组合框搜索/存储重新加载
【发布时间】:2012-11-28 05:28:03
【问题描述】:

我有一个remote 组合框,允许在用户输入时进行过滤。我的问题是,当用户键入时,后来的搜索比以前的搜索返回得更快(由于更精细),但是当早期的搜索最终返回时被替换。也就是说,即使用户输入了更精确的搜索,他们也会看到更早的、不那么精确的搜索的结果。

我不知道这里的错误是否在于组合框或其内部存储(或我:P),但在我看来,其中一个可能应该忽略对任何旧请求的响应,一旦他们'已经发布了一个新的。

我很惊讶没有发现任何关于这发生在其他人身上的信息。我会认为上述情况 - 键入并不断完善搜索,从而使查找更快 - 会相当普遍。不过,老实说,我真的不知道要搜索什么。此外,我在文档中可能错过了一个简单的配置选项来实现这种效果。

我意识到我可以使用minCharsqueryDelay大部分消除这个问题,但事实仍然是它仍有发生的可能性。

其他人有/解决过这个问题吗?

编辑: 根据要求,展示此行为的组合框示例:

{
    xtype: 'combo',
    mode: 'remote',

    pageSize: 300, 
    minChars: 3,
    queryDelay: 200,
    pageSize: 10,

    hideTrigger: true,
    selectOnFocus: true,
    enableKeyEvents: true,
    typeAhead: false,
    triggerAction: 'all',
    forceSelection: true,
    listEmptyText: 'No results',

    valueField: 'id',
    displayField: 'value',
    store: {
        url: '<url>',
        reader: new Ext.data.JsonReader({
            root: 'rows',
            totalProperty: 'totalCount',
            fields: ['id', 'value']
        })
    }
}

虽然我认为问题实际上取决于正在执行的查询和正在加载的数据。

【问题讨论】:

    标签: extjs combobox


    【解决方案1】:

    如果你能提供你尝试过的代码会很有帮助。

    1. 您是否正在使用 autoLoad:true 加载您的商店,
    2. 或使用 ajax 加载到变量中的本地数据

    可能是数据被追加而不是加载到存储中。

    【讨论】:

    • 我为展示该行为的组合框添加了代码。我没有使用您提到的任何一种方法 - 仅在用户开始输入后才加载数据。没有附加数据 - 如果您在发出另一个查询之前等待每个查询返回,那么一切都按预期工作。但是,如果同时发出多个查询(例如,在组合框中键入内容、优化搜索时),较晚和较快的查询有可能在较早和较慢的查询之前返回 - 这就是出现此问题的时候。
    【解决方案2】:

    原来这是 Ext JS 3.4.0 的问题,已在 3.4.1 中修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-16
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      相关资源
      最近更新 更多