您絕對應該看一下angular 1的基礎知識。由於angular2還年輕,將來您可能需要實現一些尚不可用的功能。 現在,我創建了您鏈接的第一個庫的天真實現。
@Component({
selector: 'ptr-container',
styles: [`
:host {
display: block;
max-height: 50px;
overflow: auto;
}
`],
template: `
<section [hidden]="!inProgress">
refresh in progress ... (change it by your own loader)
</section>
<ng-content></ng-content>
`
})
export class PullToRefreshComponent {
private lastScrollTop:number = 0;
private isAtTop:boolean = false;
private element:any;
@Input('refresh') inProgress:boolean = false;
@Output() onPull:EventEmitter<any> = new EventEmitter<any>();
constructor(el:ElementRef) {
this.element = el.nativeElement;
}
private get scrollTop() { return this.element.scrollTop || 0; }
@HostListener('scroll')
@HostListener('touchmove')
onScroll() {
if(this.scrollTop <= 0 && this.lastScrollTop <= 0) {
if(this.isAtTop) this.onPull.emit(true);
else this.isAtTop = true;
}
this.lastScrollTop = this.scrollTop;
}
}
這裏是一個基本的用法
@Component({
selector: 'app',
template: `
<ptr-container (onPull)="onPull()" [refresh]="isInProgress"></ptr-container>
`
})
export class AppComponent {
isInProgress:boolean = false;
onPull() {
this.isInProgress = true;
}
}
我沒有測試的基本庫,但是這應該工作。您可能不得不取消onScroll方法以避免發送垃圾郵件事件。
希望它能幫助你。
不幸的是,教程/框架問題對於StackOverflow是無關緊要的。 –
@DavidMakogon我很感激你指出,並看到相關鏈接[here](http://stackoverflow.com/help/on-topic)。不幸的是,我想我不知道提出這樣的通用問題的適當位置。也許你有一個建議? – bhall