Nativescript:使用 showModal 的 ModalDialogService 页面导航不正确
Nativescript: Page navigation working incorrectly with ModalDialogService using showModal
问题 - 我们在 showModal 上有一个关闭回调,理想情况下应该将用户导航到另一个页面。但是,当模式对话框关闭时,用户将导航回基页而不是要导航的页面。
所以应该作为登录 -> 员工列表工作的导航正在作为登录 -> 员工列表 -> 登录(由于额外的子路由处理而返回)
可以在 https://play.nativescript.org/?template=play-ng&id=lrIrYT&v=5
找到重现问题的代码
重现步骤
- 应用程序在主屏幕上启动
- 点击登录点击
- 弹出窗口出现。单击 Select 按钮。
- 您应该被路由到员工页面。 (理想情况下)根据导航。
- 如果您被正确路由到员工列表页面,请单击返回并移至主页并重复步骤 1 到 4。
- 应重现上述问题。
根据@Nickliev 的建议
setTimeout(() => { this._routerExtensions.navigate(['/staff-list', '10']); }, 1)
"I guess simple race condition where the close callback is (sometimes) being triggered before the route navigation (that goes back to home page). So, in this case, the modal is closed >> you are navigating >> the nativescript is navigating (too late). Using the setTimout guaranties that the code inside will be executed in the next javascript pass (VM related) and thus: modal closed >> nativescript navigation >> your navigation"
问题 - 我们在 showModal 上有一个关闭回调,理想情况下应该将用户导航到另一个页面。但是,当模式对话框关闭时,用户将导航回基页而不是要导航的页面。
所以应该作为登录 -> 员工列表工作的导航正在作为登录 -> 员工列表 -> 登录(由于额外的子路由处理而返回)
可以在 https://play.nativescript.org/?template=play-ng&id=lrIrYT&v=5
找到重现问题的代码重现步骤
- 应用程序在主屏幕上启动
- 点击登录点击
- 弹出窗口出现。单击 Select 按钮。
- 您应该被路由到员工页面。 (理想情况下)根据导航。
- 如果您被正确路由到员工列表页面,请单击返回并移至主页并重复步骤 1 到 4。
- 应重现上述问题。
根据@Nickliev 的建议
setTimeout(() => { this._routerExtensions.navigate(['/staff-list', '10']); }, 1)
"I guess simple race condition where the close callback is (sometimes) being triggered before the route navigation (that goes back to home page). So, in this case, the modal is closed >> you are navigating >> the nativescript is navigating (too late). Using the setTimout guaranties that the code inside will be executed in the next javascript pass (VM related) and thus: modal closed >> nativescript navigation >> your navigation"