如何在ionic2中的pop()之后重新加载离子页面

Aka*_*Rao 25 javascript ionic2 angular

我有2页Page1 and Page2.我this.nav.pop()在Page2中使用它会弹出Page2和Page1会启用但我想刷新Page1.先感谢您.

小智 27

你可以传递父页面和导航推送.这样你可以将父页面作为navParamter.
在父页面中:

 goToChildPage() {
    this.navCtrl.push(ChildPage, { "parentPage": this });
 }
Run Code Online (Sandbox Code Playgroud)

并且在pop之前的子页面中,您可以在父页面上调用函数

this.navParams.get("parentPage").someFnToUpdateParent();
  //or
this.navParams.get("parentPage").someFnToRefreshParent();
Run Code Online (Sandbox Code Playgroud)


Jon*_*rdi 19

忽略这里建议的直接角度实现,特别是因为你正在使用Ionic 2并且建议假设离子1.不要在你的离子应用程序中开始混合过多的直接角度,除非没有离子实现你需要的东西.从Page1和Page2中的ionic/angular2导入"事件",然后在Page2中执行类似的操作

this.events.publish('reloadPage1');
this.nav.pop();
Run Code Online (Sandbox Code Playgroud)

在Page1中

this.events.subscribe('reloadPage1',() => {
 this.nav.pop();
 this.nav.push(Page1);
});
Run Code Online (Sandbox Code Playgroud)

  • 这可行,但让UI从Page1回页然后再向前转到page1看起来不太好 (3认同)

小智 17

您可能希望在页面中实现其中一个:

ionViewWillEnter ionViewDidEnter

请查看navController和页面生命周期文档:http://ionicframework.com/docs/v2/api/components/nav/NavController/

  • ionViewWillEnter ionViewDidEnter在'弹出'(后退按钮)时不起作用所以我认为这不是一个好选择 (6认同)

Mar*_*rko 13

对我有用的简单解决方案是在ionViewDidEnter中再次调用get服务方法

ionViewDidEnter() {
    this.loadGetService();
}
Run Code Online (Sandbox Code Playgroud)


小智 6

在第1页上:

import { Events } from 'ionic-angular'
constructor(public events:Events){
   this.listenEvents();
}
... ...
listenEvents(){
   this.events.subscribe('reloadDetails',() => {
    //call methods to refresh content
   });
}
Run Code Online (Sandbox Code Playgroud)

在第2页上:

import { Events } from 'ionic-angular'
constructor(public events:Events, public navCtrl:NavController){
}

function(){
   this.events.publish('reloadDetails');
   this.navCtrl.pop();
}
Run Code Online (Sandbox Code Playgroud)

在此处输入代码


小智 3

您可以考虑在调用之前发送一个事件,this.nav.pop让页面 1 自行重新加载。