代码之家  ›  专栏  ›  技术社区  ›  cvb

在nativescript/angular应用程序中使用skipLocationChange会导致“跳过的位置”在屏幕上短暂显示

  •  0
  • cvb  · 技术社区  · 7 年前

    我正在使用onitmtap()事件路由到名为“comdataapproval”的新详细信息组件。用户完成一些操作后,将导航到“主组件”。我不希望用户在从该详细信息组件重定向后能够导航回该组件。我用 skipLocationChange: true 为了达到这个目的。

    当他们点击主组件上的back按钮时,它会按照您的预期进行操作,并将他们导航到访问“主组件”之前所在的组件。 然而, 在此过程中,“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页面,然后转到主页,而不是直接转到主页。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Manoj    7 年前

    首先必须隐藏默认值 NavigationButton 把你自己的 ActionItem 看起来像是一个后退按钮。在android上,你还需要听 activityBackPressed 事件并取消反向导航。

    然后导航到 comdata 具有 clearHistory 标志设置为 true 当用户单击 动作项 (自定义后退按钮)。对于android,你必须在 activityBackPressed 事件,以便跨平台保持行为完整。

    this.router.navigate(["/comdata"], { clearHistory: true });
    
        2
  •  0
  •   cvb    6 年前

    我想出了一个在我的情况下对我有效的解决方案,希望它能帮助别人。

    导航: 主页->ComDataPage->ComDataApproval->ComDataPage

    我的问题是 ComdataApproval公司 通信数据 我需要从api重新加载内容。这就是为什么我直接路由,并在上一个路由中使用skiplocation。为了避免暂停问题并重新加载内容,我使用了以下代码:

    ComdataApproval公司:

    this.router.backToPreviousPage();
    

    通讯数据:

     this.page.on('navigatingTo', (data) => {
            if(data.isBackNavigation)
                this.ngOnInit();    
          }     
        )
    

    然后在Ngoninit我调用我的API。我仍然不知道为什么在使用skiplocation时会出现暂停问题。

    另外,我不能使用clearhistory,这是在另一个答案中建议的,因为当用户按下后退键时,应用程序将关闭,而不是预期的到上一页的导航。

    推荐文章