Javascript ExtJs组合过滤不';我不能正常工作

Javascript ExtJs组合过滤不';我不能正常工作,javascript,extjs,combobox,Javascript,Extjs,Combobox,我尝试使用2个ExtJs组合 当用户更改第一个(更改事件)时,我更改第二个的存储。 (非常类似于国家/地区筛选。当用户选择国家/地区时,我将国家/地区加载到第二个组合存储) 到目前为止,一切都很顺利 将beforequery事件侦听器添加到第二个组合时出现问题: beforequery: function(record) { record.query = new RegExp(record.query, 'i'); record.forceAll = true; } 我这样做是

我尝试使用2个ExtJs组合

当用户更改第一个(更改事件)时,我更改第二个的存储。 (非常类似于国家/地区筛选。当用户选择国家/地区时,我将国家/地区加载到第二个组合存储)

到目前为止,一切都很顺利

将beforequery事件侦听器添加到第二个组合时出现问题:

beforequery: function(record) {
    record.query = new RegExp(record.query, 'i');
    record.forceAll = true;
}
我这样做是为了用户能够更方便地搜索组合(也可以从单词的中间,而不仅仅是从开头)

它是有效的

但是当我使用这个beforequery监听器时,我在组合存储中所做的更改并不总是出现在组合中。显然,只有当我将记录添加到组合中显示的存储中时,但当我删除记录id时,不会删除它们

有人知道为什么会这样吗


任何帮助都将不胜感激。

以“before-”开头的事件的事件函数应返回true以继续,返回false以取消事件

beforequery: function(record) {
    record.query = new RegExp(record.query, 'i');
    record.forceAll = true;
    return true;
}

似乎ExtJs在Store.removeAll()函数中有一个bug

(它们清除所有记录,但忘记将其从存储快照中删除)

我必须删除对组合的底层存储的所有调用。removeAll()到a while()逐个删除这些项


然后它就可以正常工作。

这也适用于较新版本的extjs(>=5):

var allRecords = store.getData().getSource() || store.getData();
allRecords.removeAll();