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