我有一个主选项卡(主页),其中显示了所有帖子,一旦点击帖子,它将推送帖子详细信息页面:
home.ts
:
show_detail_page(id,title,content){
this.navCtrl.push(PostDetailPage, {
id: id,
title: title,
content: content
});
}
在Postdetailpage.ts
back() {
this.viewCtrl.dismiss();
//this.navCtrl.pop(); also tried this method
}
它再次进入主页时会重新加载我所有帖子的原因是因为我在home.ts
的ionViewWillEnter()
函数中加载了帖子:
ionViewWillEnter(){
firebase.database().ref('/posts/').once('value').then(snapshot => {
snapshot.forEach(childSnapshot => {
//rest of the code
});
});
我想在不重新加载主页的情况下关闭详细信息页面,或者以类似于弹出页面的方式将详细信息页面推送到堆栈上?
因为每次导航到主页时都会触发ionViewWillenter()
。(无论是从详情页面返回还是从其他主页导航到主页)
我已将加载数据更改为ionViewWillenter()
ionViewDidLoad()
,因为当页面推送到导航堆栈时,这将触发一次。
因此,当我从详细信息页面返回到主页时,主页没有重新加载新数据+它保持相同的滚动位置(我认为这很酷且更用户友好)
ionViewDidLoad(){ //triggered only once when pushed to navigation stack
firebase.database().ref('/posts/').once('value').then(snapshot => {
snapshot.forEach(childSnapshot => {
//rest of the code
});
});
但是现在如何重新加载数据?
使用 <ion-refresher>
方法,用户可以手动下拉以重新加载/刷新页面:
在home.html
<ion-refresher (ionRefresh)="doRefresh($event);">
<ion-refresher-content
pullingText="Pull to refresh"
pullingIcon="arrow-dropdown"
refreshingSpinner="circles"
refreshingText="..fetching">
</ion-refresher-content>
</ion-refresher>
在home.ts
doRefresh(refresher) {
firebase.database().ref('/posts/').once('value').then(snapshot => {
snapshot.forEach(childSnapshot => {
//rest of the code
});
});
}
我有类似的问题。我尝试了不同的方法,但没有成功。最后,我登陆了离子论坛的一篇文章,其中一个人解释了他如何使用角度v5中的可观察量来解决它。
请参考他的帖子。https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd