2017-04-03 94 views
2

当用户在Ionic 2上滚动时拾取使我感到困惑。我基本上想说,当用户向下滚动页面时,做一些事情。OnScroll事件Ionic 2

任何例子都会很棒。

UPDATE:

我有这个在我的构造函数,所以当页面滚动我要关闭键盘,因为它保持打开,并没有其他的方式来关闭。

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我把它放在错误的地方?

+0

我假设你在视图中有一个''标签?你可能不得不在离子视图生命周期中的事件中订阅事件,而不是构造器。 – devqon

回答

17

您可以订阅内容事件。

内容有3 output events

  • ionScroll每滚动事件触发。
  • ionScrollEnd滚动结束时发出。
  • ionScrollStart滚动首次启动时发出。

听的事件:

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

还是从DOM做到这一点:

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

谢谢!我更新了一个错误,我得到了问题 – BA1995

+0

你有没有得到子组件'Content'? – Erevald

+0

是的,我再次更新以显示.ts文件的主要方面 – BA1995

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