栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

load more ,滚动加载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

load more ,滚动加载

dataAll = []
data = []
loadDataOpt = {
  pageNo: 0,
  hasMore: false,
  pageSize: 15,
  isLoading: false
};


getScreenBottomLastItemData(): number {
  const $list = document.querySelectorAll('.item');
  const $last = $list[$list.length - 1];
  const toBottom = window.innerHeight - $last.getBoundingClientRect().top;
  return toBottom;
}


loadDataByScroll(): void {
  let { pageNo } = this.loadDataOpt;
  const { pageSize } = this.loadDataOpt;
  pageNo += 1;
  const totalSize = this.dataAll.length;
  const isLoadonePage = totalSize - this.data.length > pageSize;
  if (isLoadOnePage) {
    this.data = this.dataAll.slice(0, pageNo * pageSize);
  } else {
    this.data = this.dataAll.slice(0, totalSize);
  }
  // change status
  this.loadDataOpt.isLoading = false;
  this.loadDataOpt.hasMore = totalSize > this.data.length;
  this.loadDataOpt.pageNo += 1;
}


const subscription = fromEvent(window, 'scroll')
.pipe(debounceTime(20))
.subscribe(() => {
  if (this.loadDataOpt.isLoading) {
    return;
  }  
  if (this.loadDataOpt.hasMore === true) {
    const toBottom = this.getScreenBottomLastItemData();
    if (toBottom > 266) {
      this.loadDataOpt.isLoading = true;
      setTimeout(() => {
        this.loadDataByScroll();
      }, 0.5 * 1000);
    }
  } else {
    // 如果不需要监听scroll做其他事情了,没有更多数据了可以取消订阅
    subscription.unsubscribe();
  }
});



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号