javascript - 识别用户的 ionic 事件来自 navCtrl.pop()

标签 javascript angularjs ionic-framework

我有三个页面,分别命名为 page1、page2 和 page3

他们的导航将是 page1->page2->page3

我们如何在 page2 上识别用户是通过 NavController Push 或 Pop 功能访问该页面的。

我只是想在 page2 上触发一个函数,只有当他们在 page3 上执行某些操作并通过 navCtrl.pop() 函数重定向到 page2 时。

我知道我可以在 ionViewWillEnter 中为导航堆栈中的最后一个 View 名称添加条件,因为每次用户访问第 2 页时都会触发它。但是如果有任何其他替代或好的方法可以做到这一点。请告诉我

谢谢

最佳答案

识别我们是否使用 push 访问页面很容易,因为它是将参数从 parent 传递给 child 的标准方式navCtrl.push(PageName, parameters)

我认为您要问的是如何做相反的事情:将值从 child 传回给 parent

下面是一个解决方案(详见 this link):

在 parent 中,代替正常的 push 函数,创建一个新的 promise,在 then 部分,您可以从 child 获取一个参数。

在子进程中,在 pop() 调用它的 then 之后,通过你最初创建的 promise 的 resolve 传递一个参数给父进程。

父级

new Promise((resolve, reject) => {
  this.nav.push(ChildPage, {resolve: resolve});
}).then(data => {
  // process data
});

child

this.nav.pop().then(() => this.params.get('resolve')('some data'))

我已经多次使用上述解决方案。还有这个替代解决方案,但我自己没有测试过:

https://forum.ionicframework.com/t/solved-ionic-navcontroller-pop-with-params/58104/3

关于javascript - 识别用户的 ionic 事件来自 navCtrl.pop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50117129/

相关文章:

javascript - AngularJS/Karma - 测试函数返回已解决或拒绝的 promise

javascript - 如何将两个 $firebaseArray 合并为一个?

javascript - 如何检测重叠元素下的点击?

javascript - js中的相互斥力

JavaScript。点击一个变色,点击另一个恢复,元素很多,怎么办?

javascript - 地理位置 watchPosition 每秒触发一次

windows - ionic 安装问题 : xmlbuilder

javascript - AngularJS:在登录(和注册) View 中隐藏侧边栏

javascript - 以编程方式插入 HTML 时,无法为 trix-editor 中的任何标签添加 Id 或 class 等属性

javascript - ionic ionic 列表禁用刷卡问题