[英]ExtJs combo filtering doesn't work properly
我嘗試使用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;
}
看來ExtJ在Store.removeAll()函數中有一個錯誤。
(它們會清除所有記錄,但是忘記將它們從商店的快照中刪除)。
我必須將對組合的基礎store.removeAll()的所有調用都刪除到while()上,以逐一刪除項。
然后就可以了。
這也適用於新版本的extjs(> = 5):
var allRecords = store.getData().getSource() || store.getData();
allRecords.removeAll();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.