我有三个页面分别命名为page1,page2和page3
他们的导航将是第1页->第2页->第3页
我们如何在第 2 页上识别用户通过 NavController 推送或弹出功能进入此页面。
我只想仅在他们在第 2 页上执行某些操作并通过 navCtrl.pop(( 函数重定向到 page2 时才触发第 2 页上的函数。
我知道我可以在 ionViewWillEnter 中输入导航堆栈中最后一个视图名称的条件,因为每次用户在第 2 页上时都会触发它。但是,如果有任何其他替代方法或好方法可以做到这一点。请让我知道
谢谢
识别我们是否使用 push
来到一个页面很容易,因为它是将参数从 parent
传递到 child
的标准方式navCtrl.push(PageName, parameters)
我认为您要问的是如何做相反的事情:将值从child
传递回parent
。
以下是解决方案(有关详细信息,请参阅此链接(:
在 parent 中,而不是正常的 push
函数,创建一个新的 promise,在 then
部分中,你可以从子节点那里获取一个参数。
在 child 中,pop()
调用其 then
后,并通过您最初创建的承诺的解析将参数传递给父级。
父母
new Promise((resolve, reject) => {
this.nav.push(ChildPage, {resolve: resolve});
}).then(data => {
// process data
});
孩子
this.nav.pop().then(() => this.params.get('resolve')('some data'))
我已经多次使用上述解决方案。还有这个替代解决方案,但我自己还没有测试过:
https://forum.ionicframework.com/t/solved-ionic-navcontroller-pop-with-params/58104/3
我正在使用globalThis['datatoinput']
输入数据,然后在父页面上使用ionViewDidEnter
来读取globalThis['datatoinput']