我正在使用帶有ClientFilter選項的JsonQueryRestStore來緩存查詢和數據, 爲已經發送給客戶端的數據卸載服務器的一些重複的xhr查詢。如何讓Dojo ClientFilter緩存查詢不區分大小寫?
我寫的代碼工作正常,除了一個小問題。 我有一個篩選選擇用戶類型,並獲得可用選項的限制。 這個字段沒有特定的情況,所以輸入「mi」,「MI」,「Mi」,你會得到相同的結果選擇全部大寫。 問題是,即使我使用選項: queryOptions:{ignoreCase:true} 和/或大寫字母:true似乎ClientìFilter忽略並查詢服務器的每個病例組合,因此它緩存每一個作爲不同的一個。 I.e 對於兩個字母,你可以有4種組合:mi,MI,Mi,mI
現在,如果ClientFilter沒有正確處理,我想強制所有輸入大寫。但我無法得到它的工作.. ClientFilter發送和緩存查詢,因爲用戶 鍵入它,即使我嘗試將其轉換。
任何想法如何我可以解決這個問題?
我下面的JavaScript代碼的簡化:
dojo.require('dojox.data.FilteringSelect');
dojo.require('dojox.data.ClientFilter');
dojo.require('dojox.data.JsonQueryRestStore');
var fooselect = new dijit.form.FilteringSelect({
id : "fooId",
store: new dojox.data.JsonQueryRestStore({ target: '/fooajax', labelAttribute: 'description', cacheByDefault: true }),
searchAttr : "description",
searchDelay : 300,
autocomplete : true,
uppercase: true,
trim : true,
required : ${required},
queryOptions: {ignoreCase: true}
}, "fooInput");
HTML:
<input id="fooInput">
是否與cacheByDefault不同:在商店創建過程中傳遞true? 正如你在上面看到的那樣,我使用了這個選項。它緩存查詢,但是它與案例一起緩存,因此即使數據已經在第一個數據庫上已經在cliet上,MI mi也會在服務器上執行。 – Massimo
你可以嘗試給予ignoreCase:true爲FilteringSelect而不是JsonQueryRestStore – rajkamal
甚至沒有ignoreCase:true FilteringSelect沒有正確緩存。對大寫字母小寫字母繼續做出區分,並重複查詢到服務器 – Massimo