2016-11-14 15 views
0

現在、モバイルプロジェクトでAngular2/Typescript/PhoneGapを使用しており、Angular2を使用して[Pull to Refresh]機能を実現しようとしています。残念ながら、プロジェクトの制約のためにOnsenui、Ionic、またはjQueryをソリューションに使用することはできません。Angular2/Typescript最新表示に戻る

(私は一般的なジュニア開発者です)、まったく新しいAngularデベロッパーとして、私はAngular2/Typescriptにあるサンプルを見つけることができませんでした(そして上記のフレームワークは使用しません)。既存の図書館のほとんどはAngular1であり、放棄されているようです。 hereおよびhereを参照してください。

私の質問は次のとおりです。これを達成するために私が習得できる、またはこれを解決するためのAngular2の例を知っている人はいますか?そしてもしそうでなければ、これらの放棄されたプロジェクトの1つをAngular2に変換するのに十分なだけAngular1を学ぶための最良の選択肢ですか?

+0

残念ながら、チュートリアル/フレームワークに関する質問は、StackOverflowの話題にはなりません。 –

+0

@DavidMakogonそれを指摘していただきありがとうございます。関連リンク[here](http://stackoverflow.com/help/on-topic)をご覧ください。残念ながら、私はそのような一般的な質問をするための適切な場所を知らないと思います。おそらくあなたは提案がありますか? – bhall

答えて

1

angle1の基本を見てください。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メソッドをデバウンスして、イベントエミッタをスパムしないようにする必要があります。

ご希望の場合はお手伝いします。

+0

あなたの答えは@Polochonにありがとうございます。私は、これらのタイプのシナリオではAngular1にもっと慣れなければならないと考えました。これは、私と仕事をしたり学ぶことがたくさんできます。 – bhall

+0

angle1についてのすべてのことを知る必要はなく、基本的な概念だけです。残りは純粋なjavascriptなので、もしあなたが言語に精通していれば、それはあなたに多くの時間を要する理由はありません。 – Polochon

関連する問題