如何在 Ionic 中从推送页面返回而不再次重新加载父页面



我有一个主选项卡(主页),其中显示了所有帖子,一旦点击帖子,它将推送帖子详细信息页面:

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.tsionViewWillEnter()函数中加载了帖子:

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

相关内容

  • 没有找到相关文章

最新更新