我有一个简单的提供者,它从API网址获取数据,我需要帮助对这些数据进行分页,并通过IonInfiniteScroll加载它们。
提供者
注意:
这段代码目前运行良好,我需要做一些分页和添加滚动加载。
视图
此代码返回每个类别的帖子,我需要对其进行分页(帖子)。
你有什么想法,应该更改哪个部分以及如何更改吗?
提供者
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { LoadingController } from '@ionic/angular';
@Injectable({
providedIn: 'root'
})
export class CategoriesService {
apiUrl = 'https://example.com/api/categories';
constructor(private http: HttpClient, private loadingCtrl: LoadingController) { }
getDetails(url) {
const httpOptions = {
headers: new HttpHeaders({
'Accept': 'application/json, text/plain',
'Content-Type': 'application/json'
})
};
return this.http.get(`${this.apiUrl}/${url}`, httpOptions).pipe(
map(category => category)
);
}
}
模块
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { CategoriesService } from './../../services/categories.service';
import { LoadingController } from '@ionic/angular';
@Component({
selector: 'app-categories-details',
templateUrl: './categories-details.page.html',
styleUrls: ['./categories-details.page.scss'],
})
export class CategoriesDetailsPage implements OnInit {
categories: Observable<any>;
loading: any;
constructor(
private categoriesService: CategoriesService,
public loadingController: LoadingController,
) {}
ngOnInit() {
this.getData();
}
async getData(){
this.loading = await this.loadingController.create({
message: 'Please wait...',
spinner: 'crescent',
duration: 2000
});
await this.loading.present();
this.categoriesService.getCategories().subscribe((res) => {
this.categories = res;
this.hideLoading()
});
}
private hideLoading() {
this.loading.dismiss();
}
}
注意:
loading: any;
当前的加载只会在页面加载时显示加载,它会一次性返回所有的帖子,与帖子分页或仅加载前10个帖子无关。这段代码目前运行良好,我需要做一些分页和添加滚动加载。
视图
此代码返回每个类别的帖子,我需要对其进行分页(帖子)。
<ion-content padding>
<ion-grid>
<ion-row>
<ion-list *ngIf="category">
<ion-item *ngFor="let post of category.posts">
<ion-avatar slot="start">
<img [routerLink]="['/', 'posts', post.url]" [src]="post.image">
</ion-avatar>
<ion-label class="ion-text-wrap" [routerLink]="['/', 'posts', post.url]">{{post.title}}</ion-label>
</ion-item>
</ion-list>
</ion-row>
</ion-grid>
</ion-content>
你有什么想法,应该更改哪个部分以及如何更改吗?