Tôi đã xem sự kiện Matthew Podwysocki trên https://www.youtube.com/watch?v=zlERo_JMGCw 29:38RxJS Polling các bản cập nhật liên tiếp trên cuộn vô hạn
đâu, ông giải thích thế nào họ giải quyết di chuyển trên Netflix. Nơi người dùng cuộn để biết thêm dữ liệu khi dữ liệu trước đó được dọn sạch và tăng thêm (nhưng cuộn lại sẽ hiển thị lại dữ liệu trước đó).
tôi muốn làm tương tự, nhưng tôi nắm lấy code demo 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();
}
Nhưng tôi chút nhầm lẫn về cách chuyển dữ liệu mới hoặc dữ liệu trang theo cuộn ở đây .. Ai đó có thể cung cấp cho ít giải thích về cách tôi có thể làm như sau:
- lấy danh sách đầu tiên (tôi có thể làm điều đó)
- lấy danh sách hơn khi người dùng cuộn xuống (sử dụng phân trang trang tiếp theo)
- lại di chuyển dữ liệu được tìm nạp trước đó từ bộ nhớ và tìm nạp lại theo yêu cầu (cuộn lên).
cách có thể thực hiện mà không biết chiều cao của các mục hoặc chúng ta chỉ nhận được chiều cao bằng '$ ('div'). Height();'? – Basit
Khi tải dưới màn hình, bạn cần biết chiều cao là không cần thiết. Điều này ngụ ý tải đầu tiên. Vì vậy, tôi cho rằng các trang bị xóa khỏi cuộn xuống sẽ giống nhau khi cuộn lên. Và sau đó, có, chỉ cần lấy chiều cao bằng cách sử dụng một cái gì đó như '$ ('div page1'). Height()' sẽ làm công việc cho tải lại trên di chuyển lên. –
Chỉ cần được rõ ràng, ở đây tôi đã nói về các trang chiều cao cố định (bởi vì bạn đã viết bởi "trang" trong câu hỏi của bạn). Mặc dù, trên thực tế nó là những dòng chiều cao không rõ mà chúng ta nên nói đến và hầu hết có lẽ không phải toàn bộ cửa sổ mà chỉ là một phần của nó, một vùng. Vì vậy, ở cái nhìn đầu tiên, bạn tải chúng ta hãy nói 10 dòng trong khu vực. Nếu chiều cao của đường đó cao hơn hoặc bằng 3 lần chiều cao của khu vực bạn dừng lần đầu tiên tải tại đó. Nếu không, bạn tiếp tục tải cho đến khi bạn đạt được điều này. Bạn sẽ có các biến mà bạn có thể thiết lập là: firstNumberOfRowsToGather, moreNumberOfRowsToGather, pageNumberOfRowsToGather ... –