16
我在https://www.youtube.com/watch?v=zlERo_JMGCw 29:38RxJS輪詢行更新的無限滾動
看着馬修Podwysocki事件在那裏,他解釋它們是如何解決的Netflix的滾動。用戶滾動更多的數據,因爲之前的數據被清理並且更加累加(但是回滾顯示先前的數據)。
我想做的事相似,但我抓住了Netflix的演示代碼:
function getRowUpdates(row) {
var scrolls = Rx.Observable.fromEvent(document, 'scroll');
var rowVisibilities =
scrolls.throttle(50)
.map(function(scrollEvent) {
return row.isVisible(scrollEvent.offset);
})
.distinctUntilChanged();
var rowShows = rowrowVisibilities.filter(function(v) {
return v;
});
var rowHides = rowrowVisibilities.filter(function(v) {
return !v;
});
return rowShows
.flatMap(Rx.Observable.interval(10))
.flatMap(function() {
return row.getRowData().takeUntil(rowHides);
})
.toArray();
}
但我對如何根據這裏滾動通過新的數據或頁面數據有點糊塗..有人可以給小我如何能做到下面的解釋:
- 取第一個列表(我能做到這一點)
- 獲取更多列表,用戶向下滾動(使用分頁下頁)
- 重將先前獲取的數據從內存中移出,並根據請求重新提取(向上滾動)。
怎麼能做到這一點不知道該項目的高度還是我們只是得到通過'$(「格」)的高度高度();'? – Basit
在屏幕下方的負載上,不需要知道高度。這意味着第一次加載。所以,我認爲從滾動中刪除的頁面在滾動時將是相同的。然後,是的,只需使用像'$('div page1')。height()''這樣的高度來完成滾動時重新加載的工作。 –
爲了清楚起見,我在這裏講述了固定高度頁面(因爲你在你的問題中用「頁面」編寫)。雖然,實際上我們應該談論更多未知的高度線,而且很可能不是整個窗口,而只是其中的一部分,一個區域。所以乍一看,你可以在區域中加載10行。如果這些線條高度超過或等於區域高度的3倍,則停止首先在此處加載。否則,你繼續加載,直到你達到這個。您應變量,你可以設置爲:firstNumberOfRowsToGather,moreNumberOfRowsToGather,pageNumberOfRowsToGather ... –