在 Ionic 4 中调用 complete() 时无限滚动不起作用
Infinite-scroll is not working when calling complete() in Ionic 4
我有一大堆来自后端的项目。一旦用户到达列表末尾,我就使用 ionic ion-infinite-scroll
延迟加载数据。但是当用户到达列表末尾时出现以下错误。
这是我的代码
list.component.html
<ion-content padding>
<ion-list>
<ion-item *ngFor="let i of items">{{i}}</ion-item>
</ion-list>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
list.component.ts
export class ActionSheetComponent {
items = [];
constructor(
private actionSheetCtrl: ActionSheetController
) {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
}
doInfinite(infiniteScroll) {
console.log('Begin async operation');
setTimeout(() => {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
console.log('Async operation has ended');
infiniteScroll.complete();
}, 500);
}
}
从 Ionic4 开始,V4 中发出的事件类型发生了变化。在 Ionic v3 中,我们发出合成 Angular 事件,但在 V4 中我们发出 HTML 事件,这意味着您需要从事件 target
访问完整的方法。现在处理这个问题的正确方法是 $event.target.methodName()
解-
doInfinite(infiniteScroll) {
setTimeout(() => {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
infiniteScroll.target.complete(); // this is how you need to call in v4
}, 500);
}
希望这对所有使用 ionic v4 的人有所帮助!
我有一大堆来自后端的项目。一旦用户到达列表末尾,我就使用 ionic ion-infinite-scroll
延迟加载数据。但是当用户到达列表末尾时出现以下错误。
这是我的代码
list.component.html
<ion-content padding>
<ion-list>
<ion-item *ngFor="let i of items">{{i}}</ion-item>
</ion-list>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
list.component.ts
export class ActionSheetComponent {
items = [];
constructor(
private actionSheetCtrl: ActionSheetController
) {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
}
doInfinite(infiniteScroll) {
console.log('Begin async operation');
setTimeout(() => {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
console.log('Async operation has ended');
infiniteScroll.complete();
}, 500);
}
}
从 Ionic4 开始,V4 中发出的事件类型发生了变化。在 Ionic v3 中,我们发出合成 Angular 事件,但在 V4 中我们发出 HTML 事件,这意味着您需要从事件 target
访问完整的方法。现在处理这个问题的正确方法是 $event.target.methodName()
解-
doInfinite(infiniteScroll) {
setTimeout(() => {
for (let i = 0; i < 30; i++) {
this.items.push(this.items.length);
}
infiniteScroll.target.complete(); // this is how you need to call in v4
}, 500);
}
希望这对所有使用 ionic v4 的人有所帮助!