gpt4 book ai didi

angular - 在 NativeScript/Angular 应用程序中使用 skipLocationChange 会导致 'skipped location' 短暂出现在屏幕上

转载 作者:行者123 更新时间:2023-12-05 07:25:59 25 4
gpt4 key购买 nike

我正在使用 onItemTap() 事件路由到名为“comdataApproval”的新详细信息组件。在用户做了一些事情之后,将它们导航回“主组件”。我不希望用户在从该详细信息组件重定向后能够导航回该详细信息组件。我使用 skipLocationChange: true 来尝试实现这一点。

当他们单击主要组件上的后退按钮时,它会按照您的预期进行操作,并将他们导航到他们在访问“主组件”之前所在的组件。 但是,在此过程中,“comdataApproval”组件会在屏幕上显示一小段时间(不到一秒),然后用户会被导航到正确的组件。

 constructor(private router: RouterExtensions, private activatedRoute: ActivatedRoute, private comdataService: ComdataService) {
// Use the component constructor to inject providers.
}

onItemTap(args){
let navigationExtras : NavigationExtras ={
queryParams: {
index: args.index,
comdataRecords: JSON.stringify(this.comdataRecords)
},
skipLocationChange: true
};

this.router.navigate(["/comdataApproval"], navigationExtras);
}

导航回主组件。

 .then(() => {
//do routing here
this.router.navigate(["/comdata"]);
});

我不确定为什么要显示此组件。这就像应用程序导航到详细信息组件,然后导航回历史记录中的正确组件。有什么方法可以防止发生这种短暂的“暂停”?

编辑:示例导航:

主页 -> comdataPage -> comdataApproval -> comdataPage

从这里可以按下后退按钮。如果按下它应该转到主页,而不是 comdataApproval 页面。但是,当它被按下时,它会转到 comdataApproval 页面,然后转到主页,而不是直接转到主页。

最佳答案

首先,您必须隐藏默认的 NavigationButton 并放置您自己的看起来像后退按钮的 ActionItem。在 Android 上,您还必须收听 activityBackPressed。事件并取消后退导航。

然后当用户点击您的 ActionItem 时导航到 comdata 并将 clearHistory 标志设置为 true(自定义返回按钮)。对于 Android,您也必须在 activityBackPressed 事件中执行相同的操作,以便跨平台保持行为完整。

this.router.navigate(["/comdata"], { clearHistory: true });

关于angular - 在 NativeScript/Angular 应用程序中使用 skipLocationChange 会导致 'skipped location' 短暂出现在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com