我使用ExtJS 6.2,分頁存儲與分頁並試圖從遠程源檢索數據。我使用MemoryStore的原因是我使用WebSocket從遠程源獲取數據。 假設我有1000條記錄要顯示,並且我想要每頁顯示10個條目。工作的事情,當我想從WebSocket的回調以可視化的第一頁:ExtJS 6.2理解loadPage使用分頁存儲時使用分頁
function (message) {
received_data = JSON.parse(message.data);
me.store.getProxy().setData(received_data.data);
me.store.loadPage(received_data.data.page);
爲了得到它的工作我必須在代理設置數據,而不是直接加載到店。當received_data.data.page
是1時,一切都很好。 received_data.data
包含一個JSON看起來像:
{limit: 10, page: 1, start: 0, total: 1000, items: Array(10)}
問題就出來了,當我切換到第2頁的received_data.data
現在是:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(10)}
但網格不顯示任何內容。分頁工具欄顯示'No data to display'消息,並且商店看起來很奇怪。我的意思是它沒有數據。 store.getData()
和store.getCount()
不返回任何項目和0.
解決方法是從服務器獲取所有數據,直到最後一個我想要顯示並顯示最後一頁。在第2頁的情況下,我可以從服務器獲取JSON:
{limit: 20, page: 2, start: 10, total: 1000, items: Array(20)}
這將作爲工作的期望,但當然不是一個可行的解決方案,因爲我不會採取分頁的優勢,只是檢索小數據塊而不是整個數據集。
問題是,我懷疑它與代理的工作方式有關。即,它使用參數page
,start
和limit
來計算要放入商店的實際數據。由於我對引擎蓋下的工作原理不夠了解,所以我很難讓它按照我想要的方式工作。所以問題是:我如何強制代理將正確的分頁數據集傳送到商店?