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

时间:2016-08-31 09:07:51

标签: tabs routing aurelia

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

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

参数正确传递到新页面。

但是,我想在新标签页中打开该页面。我试过了:

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

这将打开一个新标签页,并将参数值附加到网址,例如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 个答案:

答案 0 :(得分:5)

我无法重现此错误。 但是,我想恢复你对Aurelia的信任,所以根据你的用例,这里有一个demosource

在重复使用相同的ViewModel之前,我遇到了类似的问题,但在这种情况下,第二次没有调用activated事件。 我已根据Cheat Sheet

将VM的activationStrategy更改为replace,从而解决了这个问题
export class Product {
    determineActivationStrategy(){
        return activationStrategy.replace;
    }
}

这可能会让您更接近解决方案。