程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular - 滚动到页面底部会导致一个函数调用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Angular - 滚动到页面底部会导致一个函数调用?

开发过程中遇到Angular - 滚动到页面底部会导致一个函数调用的问题如何解决?下面主要结合日常开发的经验,给出你关于Angular - 滚动到页面底部会导致一个函数调用的解决方法建议,希望对你解决Angular - 滚动到页面底部会导致一个函数调用有所启发或帮助;

我想在我的网站上制作一个解决方案,就像在 Instagram 等知名网站上一样, 当用户滚动页面并到达页面底部时,将发送另一个请求并从 API 加载另一张照片。

我有代码:

  @HostListener('window:scroll',['$event'])
  getScrollHeight(): voID {
    if (document.body.scrolltop + window.innerHeight >= document.body.scrollHeight) {
      console.log('yes');
      this.pagenumber += 1;
      this.fetchData(this.pagenumber); //1
    }
  }

因为在 if 语句中有一个符号 >= 这个返回 true 多次并且方法 this.fetchData() 也被多次调用但我只需要一 当我将 >= 更改为 === 时,有时情况并非如此(它会改变我滚动的速度)

有什么解决办法吗?

工作仓库:https://stackblitz.com/edit/angular-bottom-of-the-page

解决方法

有几种不同的方法可以解决这个问题。最有可能的是,鉴于您共享的代码,最直接的方法是利用跟踪“加载”状态的属性。您的 stackblitz 示例未显示您问题中的 fetchData 方法。我在下面删掉了一个,假设通话有 1 秒的延迟。

我的假设是,您的 fetchData 调用会加载更多结果,然后使您的页面内容变大,将 window.innerHeightwindow.scrollY 向下推,以便在以下情况下再次触发此事件第二次到达页面底部。

Is isLoading 属性在您获取更多数据时设置为 true,然后在接收到新数据时设置为 false。这将允许事件多次发生,但应等到第一个事件完成后再触发另一个。

    @Component({
      SELEctor: "my-app",templateUrl: "./app.component.html",styleUrls: ["./app.component.css"]
    })
    export class AppComponent {
      name = "Angular " + VERSION.major;
    
      pagenumber = 1;
    
      isLoading = false;
      @HostListener("window:scroll",["$event"])
      getScrollHeight(): void {
        if (window.innerHeight + window.scrollY >= document.body.offsetHeight && !this.isLoading) {
          console.log("bottom of the page");
          this.pagenumber += 1;
          this.isLoading = true;
          this.fetchData()
              .pipe(
                tap(() => this.isLoading = falsE)
              )
              .subscribe();
        }
      }
    
      fetchData() {
        return of('foo')
                .pipe(delay(1000));
      }
    }

另一种方法是使用 Intersection Observer API。

,

我认为您正在寻找一种称为无限滚动的功能。在 stackoverflow 中有一些关于这个主题的讨论。一些选项是关于 how to implement infinite scroll pagination using ngx-infinite-scroll 或 without ngx-infinite-scroll 的讨论。

大佬总结

以上是大佬教程为你收集整理的Angular - 滚动到页面底部会导致一个函数调用全部内容,希望文章能够帮你解决Angular - 滚动到页面底部会导致一个函数调用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-