【ionic2】無限スクロールの使い方
なかなか手をだせにずにいたionic2を次の案件では使えるように準備中。とりあえずionic1でできてたことをionic2でもできるようになることが当面の目標。今回はapiから取得したjsonからリスト表示で、無限スクロールを実装してみる。
blankでプロジェクト作成
$ ionic start test blank
まずはhttpをつかえるように。
app/app.module.ts
import { BrowserModule } from '@angular/platform-browser';
・・・
import { HttpModule } from '@angular/http'; ## ★ これを追加
@NgModule({
・・・
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
HttpModule ## ★ これを追加
],
・・・
})
export class AppModule {}つづいてコントローラ?を実装
src/pages/home/home.ts
import { Component } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
c})
export class HomePage {
page = 1;
items = [];
completed = false;
constructor(public http: Http) {
this.getUsers().subscribe(data => {
if (0 < data.users.length) {
this.items = this.items.concat(data.users);
this.page++;
} else {
this.completed = true;
}
});
}
doInfinite(infiniteScroll) {
this.getUsers().subscribe(data => {
if (0 < data.users.length) {
this.items = this.items.concat(data.users);
this.page++;
} else {
this.completed = true;
}
infiniteScroll.complete();
});
}
getUsers() {
return this.http
.get('http://localhost:3000/users?page=' + this.page)
.map(res => res.json());
}
}さいごにテンプレートを実装
src/pages/home/home.html
・・・
<ion-content padding>
<ion-list>
<ion-item *ngFor="let item of items">
{{ item.name }}
</ion-item>
</ion-list>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)" *ngIf="completed">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>typescriptとかrxjsとかまだ全然わかってないけどとりあえずこれでできた。以上です。