不會與本地過濾店工作,以及使用一些無證的功能,這樣就可能暴露你未來的API變化,但你存儲,您可以訪問Ext.util.Collection
類型的data
財產,這不暴露removeFilters
方法。在其implementation
看,你看,你可以用這個類型的呼叫刪除您的過濾器:
store.data.removeFilters(col);
// remove all filters at once, because the collection will be updated for each call to removeFilters
store.data.removeFilters([col1, col2]);
這樣做之後,你必須手動觸發事件通知的事情一定到商店:
var data = store.data;
store.fireEvent('filter', store, data, data.getFilters());
store.fireEvent('refresh', store, data);
現在,應用新的過濾器集將意味着通過所有集合中的項目循環(而不是隻已經通過前面的過濾器的)。所以,除非我已經錯過了一些東西,刪除過濾器代替,例如,用一整套全新的,不會讓你的任何性能增益來替換當前設置過濾器。
您必須小心的是一次性應用所需的過濾器更改(通過刪除或添加它們),因爲所有過濾器方法都會觸發所有項目的傳遞。
如果我是你,我不會太擔心,因爲AFAIK循環幾千個對象應該是一個幾乎即時的操作,即使在像手機這樣的小型處理器上。
貴店從服務器加載它的數據,或者從一個客戶端代理? – rixo
@rixo在應用程序加載時,數據最初從服務器獲取AJAX請求,然後存儲在本地計算機上,然後從那裏獲取數據,如果這樣可以回答您的問題?我們無法保證互聯網連接,所以如果有互聯網接入,它就會在一開始就「同步」,否則就會使用緩存數據。 – Maccath