如何检测 Ionic 4 离子内容组件中的滚动到达终点?

2024-01-08

在 Ionic v3 ion-content 中,有像“scrollTop”这样的属性。在 Ionic v4 中不再有这样的属性...我如何确定用户是否到达了内容的末尾?

https://ionicframework.com/docs/v3/api/components/content/Content/ https://ionicframework.com/docs/v3/api/components/content/Content/ https://ionicframework.com/docs/api/content https://ionicframework.com/docs/api/content


这些功能仍然可用,只是位于不同的位置。

启用后scrollEvents,你需要使用ionScroll事件,然后根据结果计算高度getScrollElement()函数,而不是ion-content- 具有固定高度的窗口高度。

我在下面写了一个例子。您可以删除console.log并将其收紧一点,我只是将它们留在里面以帮助您了解发生了什么。

示例页面:

<ion-header>
  <ion-toolbar>
    <ion-title>detectScrollToBottom</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content [scrollEvents]="true" (ionScroll)="logScrolling($event)">
  <p *ngFor="let dummy of ' '.repeat(75).split('')">Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia placeat nam sapiente iusto eligendi</p>
</ion-content>

示例代码:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-detect-scroll-to-bottom',
  templateUrl: './detect-scroll-to-bottom.page.html',
  styleUrls: ['./detect-scroll-to-bottom.page.scss'],
})
export class DetectScrollToBottomPage implements OnInit {

  private scrollDepthTriggered = false;

  constructor() { }

  ngOnInit() {
  }

  async logScrolling($event) {
    // only send the event once
    if(this.scrollDepthTriggered) {
      return;
    }

    console.log($event);

    if($event.target.localName != "ion-content") {
      // not sure if this is required, just playing it safe
      return;
    }

    const scrollElement = await $event.target.getScrollElement();
    console.log({scrollElement});

    // minus clientHeight because trigger is scrollTop
    // otherwise you hit the bottom of the page before 
    // the top screen can get to 80% total document height
    const scrollHeight = scrollElement.scrollHeight - scrollElement.clientHeight;
    console.log({scrollHeight});

    const currentScrollDepth = scrollElement.scrollTop;
    console.log({currentScrollDepth});

    const targetPercent = 80;

    let triggerDepth = ((scrollHeight / 100) * targetPercent);
    console.log({triggerDepth});

    if(currentScrollDepth > triggerDepth) {
      console.log(`Scrolled to ${targetPercent}%`);
      // this ensures that the event only triggers once
      this.scrollDepthTriggered = true;
      // do your analytics tracking here
    }
  }

}

日志示例:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 Ionic 4 离子内容组件中的滚动到达终点? 的相关文章

  • Angular 没有 NameService 提供者

    我在将类加载到 Angular 组件中时遇到问题 我已经尝试解决这个问题很长时间了 我什至尝试过将所有内容合并到一个文件中 我所拥有的是 应用程序 ts
  • 更改 ag-grid 上的页面和缓存块大小会导致项目无限加载

    我希望使用 ag grid 的 服务器端 模式重新获取每个页面的数据 为了做到这一点 我将 maxBlocksInCache 1 和 cacheBlockSize 设置为等于每页的项目数 到这里为止一切正常 现在 当我更改每页的项目数时 网
  • 如何避免 Angular 材料中出现额外的 mat-form-field-underline

    我在查找为什么在使用组件时会出现额外的 mat form field underline 时遇到问题 我的页面使用此标记
  • @Component 和 @View 的区别

    我试图找出 AngularJS 2 中 Component 和 View 之间的区别 在下面的两个例子中我可以实现完全相同的事情 没有 View的示例 import Component from angular2 core Componen
  • 是否可以在运行时动态设置组件@Input?

    说我有一个dynamic component wrapper可以实例化任何Component传递给它的类 DRE013 DCOOKE 16 05 2017 The component to instantiate Input compone
  • 为什么 Angular 2 ngOnChanges 不响应输入数组推送

    我的角度应用程序遇到了问题 我使用输入作为数组 并在单击事件发生时将值推送到数组 但是当数组推送完成时 ngOnChanges 不会触发 有没有办法触发 ngOnChange 我的代码是 ts 文件是 Component selector
  • 如何处理发布到 npm 的 Angular 2 模块中的脚本依赖关系

    我最近向 npm 发布了一个 Angular 2 库 我已在库 package json 文件中列出了所有依赖脚本 当我跑步时npm install my library所有依赖脚本都没有安装 所以 我的问题是如何在安装库时安装依赖脚本 N
  • angular2-google-maps 自动完成功能不起作用

    我正在尝试使用 angular2 google maps 将自动完成功能添加到我的项目中 我在 AppModule 中添加 AgmCoreModule forRoot 带有库 places 然后在组件中添加自动完成代码 我仍然收到 无法读取
  • Angular 中的文件输入事件类型

    所以我已经使用 Angular 和 Typescript 很长时间了 我似乎无法找出输入文件的类型是什么 例如
  • Angular 8 Native Typescript 无崩溃,访问器简写

    角8 我曾经在打字稿方面用作简短的黑客 object accessor accessor accessor to get object accessor accessor accessor 如果其中一个子级为空 则不会冒抛出错误的风险 根据
  • 如何在 Angular @Input 中仅接受预定义值

    我的问题是 我在 a 中收到一个字符串值作为组件的参数 但我想限制可以用作参数的值 就像enum I use Input type string 但是在组件中 一切都可以引入type正如我之前所说 我需要将其限制为 3 个选项 例如Enum
  • Rxjs、fromEvent处理多个事件

    在 rxjs 5 1 中处理同一 DOM 节点上的多个事件的最佳方法是什么 fromEvent element event name 但我一次只能指定一个事件 我要手柄scroll wheel touchmove touchend even
  • 如何使用降级 Module() 引导应用程序与 ui-router 混合

    我正在使用 ui router 混合 https github com ui router angular hybrid https github com ui router angular hybrid 引导 经典 方式 我们在数据网格中
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • 滚动到 ScrollViewer 末尾的最佳方法

    目前 当我添加新项目时 我让代码自动滚动到末尾的唯一方法如下 XAML
  • 在指令中动态添加 *ngIf

    如何动态地将 ngIf 添加到用属性指令修饰的元素 为了一个简单的实验 我尝试了这个 Directive selector lhUserHasRights export class UserHasRightsDirective implem
  • 在哪里存储角度中的 JWT 令牌?

    我正在使用 Django 和 Angular 构建一个应用程序 目前 我正在本地存储上存储后端发出的 JWT 但是 我担心 XSS 攻击 我应该使用仅 HTTP 的 cookie 来存储令牌吗 我还考虑将令牌存储在我的身份验证服务类中的变量
  • 有谁知道在 Angular 2 应用程序中使用的简单日期选择器?

    有谁知道在 Angular 2 应用程序中使用的简单日期选择器 我似乎无法让 jquery ui datepicker 工作 有谁知道一个容易实施的方法 我尝试过 html date 但它不适用于所有浏览器 我正在使用带有 html5 和
  • 为 Angular2 中的组件加载多个样式表

    我正在构建一个 angular2 应用程序 当我尝试为同一组件加载多个样式表时 我面临多个问题 这是我正在做的代码 import Component from angular core Component selector my tag t
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区

随机推荐

  • 如何动态找出具有自定义属性的所有方法

    我有一个简单的挑战 我动态地需要找出 C 中具有特定属性的所有方法 我将从另一个应用程序动态加载程序集 并且需要找出确切的方法 程序集如下所示 基础 dll Class Base testmethod public void method1
  • Twitter 以编程方式添加照片

    我为 Firefox 制作了裁剪屏幕截图和上传插件 我想带来一个允许用户发布图像的功能 手动 像人类一样 的过程是这样的 打开 twitter com 如果未登录 请告诉用户登录 点击 新推文 就完成了 Attach images by d
  • 比较两个 git 存储库(包括所有分支)

    我有同一个 git 存储库的两个分支 我想检查它们是否完全相同 因此可以安全地删除其中一个而不丢失任何信息 虽然我知道如何比较单个分支 但我想问是否有一种简单的方法来比较所有分支 标签等 最快的方法是添加第二个遥控器并比较输出git ls
  • 如何用 C++ 编写“meta if else if..”?

    我刚刚学习 C 元编程的基础知识 我认为很高兴看到其他人如何解决以下问题 另外 很高兴看到使用 Boost 元编程库的解决方案 因为我认为它们对我来说是黑暗的角落 那么问题来了 是否可以重写得更优雅呢 假设我们有以下结构 template
  • 如何使用 mocha 和 supertest 测试带有标头参数的 Express Rest api?

    我必须测试我的其余 api 某些路由需要用户身份验证令牌的 http 请求标头中的值 我已将有趣的业务逻辑分离为纯 JavaScript 代码 但我找不到方法来测试在 http 请求标头中需要令牌的路由 欢迎摩卡和 或超级测试的任何其他替代
  • Bootstrap 响应式输入表单字段

    我正在使用 input lg 使表单字段变大 我的期望是 当视口缩小时 引导程序默认小于 768px 表单字段会变小并采用正常设置 但事实并非如此 有任何想法吗 bootstrap 可以处理这种情况吗 UPDATE HTML
  • 为什么抽象类有虚函数表?

    关于this https stackoverflow com questions 2592438 does an abstact classes have a vtable post 对于使用 vtable 的实现 答案是 是的 通常 你
  • 三角形 - 三角形相交测试

    我想知道是否有一些教程或指南来理解和在 3D 环境中实现三角形 三角形相交测试 我不需要知道交叉点发生在哪里 只需要知道发生了交叉点 我本来打算按照理论 pdf 来实现它 但我很困惑 计算三角形 2 的平面方程 如果三角形 1 的所有点都在
  • Spring中@Valid注解表示什么?

    在下面的示例中 ScriptFile参数标有 Valid注解 什么是 Valid注释做什么 RequestMapping value scriptfile method RequestMethod POST public String cr
  • Shapely:字符串中的多边形?

    我保存了一些形状多边形的字符串表示 POLYGON 51 0 3 0 51 3 3 61 51 3 3 0 51 0 3 0 有没有一些快速的方法可以直接将其转换回 Polygon 类型 或者我是否需要手动解析字符串来创建 Polygon
  • 如何将双精度数组的数据帧转换为向量?

    我有以下数据帧 其中包含双精度数组 需要将其转换为向量才能将其传递给 ML 算法 谁能帮我这个 fList org apache spark sql DataFrame features array
  • sklearn Logistic 回归 ValueError: X 每个样本有 42 个特征;期待 1423

    我被困在试图解决一个问题 这就是我想做的 我想使用逻辑回归预测缺失值 Nan 分类值 这是我的代码 df 1 我的数据集仅在 Metier 功能中缺少值 我试图预测的缺少值 X train pd get dummies df 1 df 1
  • Google 日历 api 出现错误,例如“domain”:“global”、“reason”:“notFound”、“message”:“Not Found”

    我尝试从日历示例中获取事件列表here https developers google com calendar api v3 reference events list 无论我选择哪一处房产 使用时 我总是收到 404 未找到 错误 任何
  • 背景颜色阻碍 WPF UserControl 内容

    我有一个UserControl 在 XAML 中引用如下
  • 处理 SVN 与 Tortoise 中的冲突?

    每当出现合并冲突或类似问题时 它都会让我慢下来 有人可以向我解释如何强制解决冲突吗 例如 我的一个朋友对存储库中的文件进行了编辑并提交 当他这样做时 我已经重命名了该文件 并在我的工作副本上对其进行了许多编辑 当我去提交时 我明显得到了冲突
  • 如何允许在 WiX 刻录引导程序中选择 MSI 功能?

    我刚刚开始尝试使用 Burn 来尝试链接多个 MSI 文件 我使用的是 WiX v3 6 2705 0 链接正在工作 但我现在正在尝试让可选功能正常工作 我希望这只是将我的 MsiPackage 标签的 EnableFeatureSelec
  • 了解 std::function 和 std::bind

    我正在玩 std function 和 std bind 我注意到一些不直观的东西 我想更好地理解它 例如 void fun void hun std string int main function
  • 将动态值与图像组件一起使用时出现问题反应本机

    我从数据库获取数据并将其放入源图像中 这将是错误的 但如果我只放入字符串它将运行正常 Run ok
  • 将 future 与 boost::asio 一起使用

    有谁有一个很好的指向使用示例的指针来自 Boost 线程库的 futures http www boost org doc libs 1 53 0 doc html thread synchronization html thread sy
  • 如何检测 Ionic 4 离子内容组件中的滚动到达终点?

    在 Ionic v3 ion content 中 有像 scrollTop 这样的属性 在 Ionic v4 中不再有这样的属性 我如何确定用户是否到达了内容的末尾 https ionicframework com docs v3 api