【问题标题】:Nativescript: Page navigation working incorrectly with ModalDialogService using showModalNativescript:使用 showModal 的 ModalDialogService 页面导航无法正常工作
【发布时间】:2019-02-14 08:19:40
【问题描述】:

问题 - 我们在 showModal 上有一个关闭回调,理想情况下应该将用户导航到另一个页面。但是,当模式对话框关闭时,用户将被导航回基本页面,而不是要导航的页面。

所以导航应该作为登录 -> 员工列表作为登录 -> 员工列表 -> 登录(由于额外的子路由处理而返回)

可以在https://play.nativescript.org/?template=play-ng&id=lrIrYT&v=5找到重现问题的代码

重现步骤

  1. 应用在主屏幕上启动
  2. 点击登录点击
  3. 出现弹出窗口。点击选择按钮。
  4. 您应该被引导到员工页面。 (理想情况下)根据导航。
  5. 如果您被正确引导到员工列表页面,请单击返回并移动到主页并重复步骤 1 到 4。
  6. 上述问题应转载。

【问题讨论】:

  • 尝试在模式关闭回调中为导航调用添加一个小超时。
  • setTimeout(() => { this._routerExtensions.navigate(['/staff-list', '10']); }, 1)
  • @NickIliev 成功了。然而,这个问题的根本原因是什么?
  • 我猜是简单的竞争条件,关闭回调(有时)在路线导航(返回主页)之前被触发。因此,在这种情况下,模式已关闭 >> 您正在导航 >> nativescript 正在导航(为时已晚)。使用 setTimout 保证里面的代码将在下一个 javascript 传递(VM 相关)中执行,因此:modal closed >> nativescript navigation >> your navigation

标签: nativescript angular2-nativescript nativescript-angular


【解决方案1】:

正如@Nickliev 建议的那样

setTimeout(() => { this._routerExtensions.navigate(['/staff-list', '10']); }, 1)

“我猜是简单的竞争条件,关闭回调(有时)在路由导航(返回主页)之前被触发。所以,在这种情况下,模式是关闭的>>你正在导航>> nativescript 正在导航(为时已晚)。使用 setTimout 保证内部代码将在下一个 javascript 传递(VM 相关)中执行,因此:modal closed >> nativescript navigation >> your navigation"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2016-08-15
    相关资源
    最近更新 更多