在移动app开发过程中,很多时候会遇到当前页面回传值到其上一个页面的问题。这里我就大致描述下ionic开发中,常用的两种页面回传值的方式。
一、Promise的传值方式
1.在上一个页面添加如下方法:
changeUsernoText=(newuserno)=>
{
return new Promise((resolve,reject)=>{
if(typeof newuserno!="undefined")
{
console.log("newuserno",newuserno)
resolve('ok')
}else
{
reject(Error('error'))
}
})
}
2.在push到当前页面时,将改方法以参数的形式传递给当前页面:
gotoRegister()
{
this.navCtrl.push(RegisterPage,{changeUsernoText:this.changeUsernoText})
}
3.在当前页面里面离开时调用:
ionViewWillUnload( )
{
console.log("callback","123")
let callback=this.navParams.get("changeUsernoText")
callback("123").then((result)=>{
console.log("result",result)
},(error)=>{
console.log("error",error)
})
}
二、使用Events发布订阅事件
1.在当前页面和当前页的上一个页面构造函数里面初始化Events:
constructor(private events: Events) {
}
2.在当前页面需要往回传值的地方使用初始化后的Events发布一个事件:
this.events.publish('disburdent', "ABD");
3.在上一个页面通过订阅的方法获取Events发布事件的传参:
this.events.subscribe('disburdent',(result)=>{
console.log(result);
});
注意:Events中订阅和发布的key值必须是同一个值,否则取到的值会为空