我尝试使用2个ExtJs组合。
当用户更改第一个(更改事件)时,我更改第二个商店。 (非常类似于国家/地区过滤。当用户选择国家/地区时,我会将状态加载到第二个组合商店。)
直到这里,一切正常。
当我向第二个组合添加一个beforequery事件监听器时出现问题:
beforequery: function(record) {
record.query = new RegExp(record.query, 'i');
record.forceAll = true;
}
我这样做是为了让用户能够更方便地搜索组合(也可以从单词的中间而不是从头开始)。
它有效,
但是当我使用这个之前的查询监听器时,我在组合商店中所做的更改并不总是出现在组合中。显然,只有当我在商店中添加记录时才显示在组合中,但是当我删除记录时,ID不会删除它们。
有人知道为什么会这样吗?
任何帮助都将不胜感激。
答案 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();