我有一個remote
組合框,允許用戶輸入時進行過濾。我遇到這樣的問題:隨着用戶輸入,後面的搜索返回的速度會比之前的搜索更快(由於更精細),但是當更早的搜索最終返回時會被替換。也就是說,即使用戶輸入了更精確的搜索,他們也會看到更早的,不太精確的搜索結果。ExtJS 3.4 - 連續的組合框搜索/存儲重新加載
我不知道這裏的錯誤在於組合框或其內部存儲(或我:P),但在我看來,他們中的一個可能應該忽略對任何舊請求的響應已經發布了一個新的。
我很驚訝沒有找到任何關於這種情況發生的信息給其他人。我會想到上面的情況 - 打字和不斷完善搜索,從而加快查找速度 - 會相當普遍。儘管如此,說實話,我真的不知道要搜索什麼。此外,可能會有一個簡單的配置選項來達到我在文檔中忽略的效果。
我知道我可以用minChars
和queryDelay
發揮大多消除這個問題,但事實仍然是,仍然有它發生的可能性。
有沒有其他人解決過這個問題?
編輯: 按照要求,表現出這種行爲的組合框的例子:
{
xtype: 'combo',
mode: 'remote',
pageSize: 300,
minChars: 3,
queryDelay: 200,
pageSize: 10,
hideTrigger: true,
selectOnFocus: true,
enableKeyEvents: true,
typeAhead: false,
triggerAction: 'all',
forceSelection: true,
listEmptyText: 'No results',
valueField: 'id',
displayField: 'value',
store: {
url: '<url>',
reader: new Ext.data.JsonReader({
root: 'rows',
totalProperty: 'totalCount',
fields: ['id', 'value']
})
}
}
雖然我想這個問題是非常依賴於所取得的查詢和裝載數據。
我已經添加了一個組合框的代碼,表現出這種行爲。我使用的都不是你提到的方法 - 數據只在用戶開始輸入時才加載。數據未被追加 - 如果您在發出另一個請求之前等待每個查詢返回,則所有工作都按預期工作。但是,如果多個查詢一起發佈(例如,在輸入組合框的同時改進搜索),那麼更快和更快的查詢就有機會在較早和較慢的查詢之前返回 - 這就是出現此問題的時間。 – oogles