我希望能够在ion-content中存在或不存在滚动条的情况下隐藏或显示元素。具体来说,我想在没有滚动条的情况下显示一个按钮(用于加载列表中的更多项),并在出现滚动条时隐藏它(这样通过ion-infinite-scroll加载更多项)。
我的Ionic应用程序也将部署到桌面,因此拥有大屏幕的用户一开始看不到滚动条,因此ion-infinite-scroll不会被触发。
以下是展示该问题的演示:
home.page.html
我的Ionic应用程序也将部署到桌面,因此拥有大屏幕的用户一开始看不到滚动条,因此ion-infinite-scroll不会被触发。
以下是展示该问题的演示:
home.page.html
<ion-header>
<ion-toolbar>
<ion-title>
Ionic header
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<div class="ion-padding">
<p *ngFor="let item of itemList">{{ item }}</p>
<!-- How to hide this button when ion-content has a scrollbar? -->
<!-- *ngIf="???" -->
<ion-button (click)="incrementItemList(5)">Load more items</ion-button>
</div>
<ion-infinite-scroll (ionInfinite)="loadMoreItems($event)">
<ion-infinite-scroll-content loadingSpinner="crescent"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
<ion-footer>
<ion-toolbar>
<ion-title>
Ionic footer
</ion-title>
</ion-toolbar>
</ion-footer>
home.page.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
itemList: string[] = [];
constructor() {}
ionViewWillEnter() {
this.incrementItemList(5);
}
incrementItemList(times: number) {
for (let i = 1; i <= times; i++) {
this.itemList.push(`Lorem ipsum dolor sit amet consectetur adipisicing elit. Quia placeat nam sapiente iusto eligendi`);
}
}
loadMoreItems(event: any) {
setTimeout(() => {
this.incrementItemList(15);
event.target.complete();
}, 1000);
}
}
我使用的是Ionic 4.5.0和Angular。
我尝试使用 getScrollElement,scrollHeight,clientHeight,offsetHeight,但都没有成功。
有什么建议吗?