当用户在 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 个输出事件:
- ionScroll 在每个滚动事件上发出。
- 离子滚动结束 滚动结束时发出。
- ionScrollStart 滚动首次启动时发出。
收听事件:
@ViewChild(Content)
content: Content;
// ...
ngAfterViewInit() {
this.content.ionScrollEnd.subscribe((data)=>{
//... do things
});
}
或者从 DOM 进行操作:
<ion-content (ionScroll)="onScroll($event)">
对于离子 4
<ion-content [scrollEvents]="true" (ionScroll)="onScroll($event)">
您可以使用 ngOnInit 方法来注册滚动事件:
ngOnInit() {
if (this.content) {
this.content.ionScroll.subscribe((data)=>
this.keyboard.close();
});
}
}
在自定义指令中尝试使用如下内容:
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);
});
}