【问题标题】:Sending params in pop/dismiss在 pop/dismiss 中发送参数
【发布时间】:2018-11-13 01:30:35
【问题描述】:

我有 3 条路线。当我从第一个移动到第二个时,我需要传递一个参数: this.navCtrl.push(ReadyPage, { newGame: true });

但是当我从 3rd 移动到 2nd 时,有时我也需要传递这个参数。

我正在尝试这个但不起作用: this.viewCtrl.dismiss({ newGame: true });

比较两种方法dismiss 似乎没有那个选项(除非它被称为data 而不是params): abstract push(page: Page | string, params?: any, opts?: NavOptions, done?: TransitionDoneFn): Promise<any>; dismiss(data?: any, role?: string, navOptions?: NavOptions): Promise<any>;

【问题讨论】:

  • 您能详细解释一下您的问题吗?你那里有什么类型的页面?在哪种情况下你想传递什么参数?
  • 除了我有 3 页并且我想向后发送一个参数(无论何时何地)之外,不需要额外的解释

标签: ionic-framework ionic3


【解决方案1】:

最后一页:

 this.navCtrl.getPrevious().data.newGame = true;
 this.navCtrl.pop();

第二页:

ionViewWillEnter() {
     this.newGame = this.navParams.get('newGame')|| null;
}

【讨论】:

  • 我不知道你可以做到这一点,但是当你考虑它时它是有道理的。如果您可以直接获取和更新 navStack 中的内容,为什么还要使用事件或回调
  • 优秀,最好的方法,避免回调地狱
  • 感谢您的回答,丹妮!我想使用 Ionic 导航中的默认后退箭头,但将数据传递到堆栈上的上一页。对我有用的是在最后一页使用 ionViewWillLeave() 但不使用 pop() 因为它不需要。
【解决方案2】:

如果您可以通过这种方式解决问题,请访问this,它建议在从第 3 页返回到第 2 页时使用带参数的pop()

过渡时传入回调

// callback...
 myCallbackFunction = function(_params) {
     return new Promise((resolve, reject) => {
             resolve();
         });
 }

 // push page...
 this.navController.push(OtherPageComponent, {
    callback: myCallbackFunction
});

在其他页面组件中

 this.callback = this.navParams.get("callback")

 this.callback(param).then(()=>{
    this.navController.pop();
 });

【讨论】:

  • 在此选项和使用事件的选项之间,您认为哪个是最好的?
  • 我试过这种方式,但没有奏效。我很确定是我的错,但它也可能是 Ionic 的版本。另一方面,事件有效,但似乎需要更多时间才能从事件中获取价值
  • 还有为什么在前一页push()上有这个回调。例如,它不应该在 ionViewDidEnter() 内部吗?
  • 找到了一个更快的方法。我贴出来了。可能是一种新方式
  • 我收到错误,回调不是 ionic 4 上的函数,“错误类型错误:this.callback 不是函数”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 2019-08-11
相关资源
最近更新 更多