16
私は、彼は、彼らがネットフリックスのスクロールを解く方法を説明しhttps://www.youtube.com/watch?v=zlERo_JMGCw 29:38RxJSポーリング
にマシューPodwysockiイベントを見ていました。以前のデータがクリーンアップされ、より多くのデータが追加されたとき(ただし、スクロールバックすると前のデータが再び表示される)
私は似てやってみたかったが、私は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();
}
をしかし、私はここに、スクロールに応じて、新しいデータやページデータを渡す方法について少し困惑している...誰かが少しを与えることができます私は次の操作を行うことができる方法の説明:
- は、最初のリストを取得するには
- 再(ページング次のページを使用して)
- は、ユーザスクロールダウンとしてより多くのリストを取得(私はそれを行うことができます)以前にフェッチしたデータをメモリから移動し、要求に応じて再フェッチ(スクロールアップ)します。
どのようにアイテムの高さを知らなくてもそれを行うことができますか、単に高さを '$( 'div')で取得できますか?height();'? – Basit
画面下の負荷では、高さを知る必要はありません。これは最初の負荷を意味します。だから、スクロールダウンしたページはスクロールアップしても同じになると考えました。そして、はい、 '$( 'div page1')。height()'のようなものを使って高さを取るだけで、スクロールアップ時にリロードすることができます。 –
ちょうど明確にするために、ここで私はあなたの質問の "ページ"で書いたので、固定された高さのページの面で話しました。実際には、私たちが話すべきではない高さの線がありますが、窓の全部ではなく、その一部だけであるゾーンです。一見すると、ゾーンに10行をロードしようとします。これらの行の高さがゾーンの高さの3倍以上であれば、そこに最初にロードするのをやめます。それ以外の場合は、これに達するまでロードを続けます。 firstNumberOfRowsToGather、moreNumberOfRowsToGather、pageNumberOfRowsToGather ... –