代码之家  ›  专栏  ›  技术社区  ›  Anthony Armour

使用参数在新的浏览器选项卡中导航到aurelia路线

  •  3
  • Anthony Armour  · 技术社区  · 8 年前

    我可以将参数传递给路由,并使用以下代码在那里导航:

    this.router.navigateToRoute('CaseList', { RefNo: this.selectedData.RefNo
    },  { replace: true })
    

    参数被正确传递到新页面。

    但是,我想在新选项卡中打开页面。我尝试过:

    window.open(this.router.generate('CaseList', { RefNo:
    this.selectedData.RefNo }),'_blank');
    

    这将打开一个新选项卡,并将参数值附加到URL,例如。 http://localhost:49328/AppCaseMgmt/CaseList/20150000015 ,但如果我尝试按如下方式读取激活时的参数值:

    activate(params) {
        console.log('activate in case list');
        console.log(params.RefNo);
        ....
    }   
    

    我正在使用将路由动态添加到路由器

    this.router.addRoute({
            route: "/AppCaseMgmt/CaseList/:RefNo", name: "CaseList", moduleId: "app/case-management/case-list",
            title: "CaseMgmt:CaseManagement_SiteMapHeaderCaseManagement_title" });
        this.router.refreshNavigation();
    

    但据我所知,这不应该有什么不同。(我尝试将路由添加到config.map,但没有成功)。我开始认为这是不可能的。有人有什么想法吗?

    谢谢 安东尼

    1 回复  |  直到 8 年前
        1
  •  5
  •   Marton Sagi    8 年前

    我无法重现此错误。 然而,我想恢复你对奥雷利亚的信心,所以这里有一个工作 demo 具有 source 根据您的用例。

    我以前在重用同一ViewModel时遇到过类似的问题,但在这种情况下 activated 事件没有第二次被调用。 我通过将VM的激活策略更改为 replace 根据 Cheat Sheet

    export class Product {
        determineActivationStrategy(){
            return activationStrategy.replace;
        }
    }