OnScroll事件Ionic 2

时间:2017-04-03 13:51:57

标签: angular typescript ionic-framework ionic2

当用户在Ionic 2上滚动时,拾起我很困惑。我基本上想说,当用户向下滚动页面时,做一些事情。

任何例子都会很棒。

更新:

我在构造函数中有这个,所以当页面滚动时我想关闭键盘,因为它处于打开状态而没有其他方法可以关闭。

import { Component, ViewChild } from '@angular/core';
import { NavController, NavParams, Content } from 'ionic-angular';
import { Keyboard } from '@ionic-native/keyboard';

export class SearchPage {

  @ViewChild(Content)
  content:Content;

  constructor(public keyboard: Keyboard, public formBuilder: FormBuilder, public navCtrl: NavController, public navParams: NavParams, public apiAuthentication: ApiAuthentication, private http: Http) {

    this.content.ionScroll.subscribe((data)=>{
      this.keyboard.close();
    });
  }
}

但我收到此错误Cannot read property 'ionScroll' of undefined我将它放在错误的位置?

3 个答案:

答案 0 :(得分:36)

您可以订阅内容活动。

内容有3 output events

  • ionScroll 在每个滚动事件中发出。
  • ionScrollEnd 滚动结束时发出。
  • ionScrollStart 首次滚动时发出。

收听活动:

@ViewChild(Content)
content: Content;
// ...
ngAfterViewInit() {
  this.content.ionScrollEnd.subscribe((data)=>{
    //... do things
  });
}

或者从DOM中做到:

<ion-content (ionScroll)="onScroll($event)">

对于Ionic 4

<ion-content [scrollEvents]="true" (ionScroll)="onScroll($event)">

答案 1 :(得分:1)

您可以使用ngOnInit方法注册滚动事件:

ngOnInit() {
   if (this.content) {
      this.content.ionScroll.subscribe((data)=>
        this.keyboard.close();
      });
    }
  }

答案 2 :(得分:0)

在自定义指令内部尝试使用以下内容:

import { Renderer2 } from '@angular/core';
...
constructor(private renderer: Renderer2) {}

ngOnInit() {
    this.renderer.listen(this.myElement, 'scroll', (event) => {
        // Do something with 'event'
        console.log(this.myElement.scrollTop);
    });
}