2017-04-03 5 views
2

Aufnehmen, wenn ein Benutzer auf Ionic 2 blättern, verwirren mich. Ich möchte im Grunde sagen, wenn ein Benutzer die Seite herunterscrollt, etwas tun.OnScroll-Ereignis Ionic 2

Alle Beispiele wären toll.

UPDATE:

Ich habe dies in meinem Konstruktor, so, wenn die Seite scrollt ich die Tastatur schließen will, weil es offen und keine andere Möglichkeit gelassen wird zu schließen.

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(); 
    }); 
    } 
} 

Jedoch bekomme ich diesen Fehler Cannot read property 'ionScroll' of undefined bin ich es an der falschen Stelle setzen?

+0

I Angenommen, Sie haben ein "" -Tag in Ihrer Sicht? Wahrscheinlich müssen Sie das Ereignis in einem der ionischen Ansichtslebenszyklen anstelle des Konstruktors abonnieren. – devqon

Antwort

17

Sie können Inhaltsereignisse abonnieren.

Inhalt hat 3 output events:

  • ionScroll auf jedem Scroll-Ereignis ausgegeben.
  • ionScrollEnd Wird gesendet, wenn das Scrollen beendet wird.
  • ionScrollStart Wird ausgelöst, wenn das Scrollen zuerst gestartet wird.

Hören Sie auf ein Ereignis:

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

Oder es aus dem DOM:

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

Vielen Dank dafür! Ich habe die Frage mit einem Fehler aktualisiert ich bin gettign – BA1995

+0

Hast du die Kindkomponente 'Content' bekommen? – Erevald

+0

Ja, ich habe wieder aktualisiert, um die wichtigsten Aspekte der .ts-Datei zu zeigen – BA1995

0

Wenn innerhalb einer benutzerdefinierten Richtlinie versuchen, mit so etwas wie dies:

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); 
    }); 
}