ExtJs组合过滤无法正常工作

时间:2014-08-14 15:16:16

标签: javascript extjs combobox

我尝试使用2个ExtJs组合。

当用户更改第一个(更改事件)时,我更改第二个商店。 (非常类似于国家/地区过滤。当用户选择国家/地区时,我会将状态加载到第二个组合商店。)

直到这里,一切正常。

当我向第二个组合添加一个beforequery事件监听器时出现问题:

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

我这样做是为了让用户能够更方便地搜索组合(也可以从单词的中间而不是从头开始)。

它有效,

但是当我使用这个之前的查询监听器时,我在组合商店中所做的更改并不总是出现在组合中。显然,只有当我在商店中添加记录时才显示在组合中,但是当我删除记录时,ID不会删除它们。

有人知道为什么会这样吗?

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

以'之前开始的事件的事件功能 - '应该返回true表示继续,false表示取消该事件。

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

答案 1 :(得分:0)

似乎ExtJs在Store.removeAll()函数中有一个错误。

(他们清理所有记录,但忘记将它们从商店的快照中删除)。

我不得不删除对combo的底层store.removeAll()的所有调用,一个while()逐个删除项目。

然后就可以了。

答案 2 :(得分:0)

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

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