2016-08-31 3 views
2

ich einen Parameter auf einen Weg passieren kann und dort navigieren mit diesem Code:mit einem Parameter eine aurelia Route navigieren und in einem neuen Browser-Tab

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

Der Parameter korrekt auf die neue Seite geleitet wird.

Allerdings möchte ich die Seite in einem neuen Tab öffnen. Ich habe versucht:

Dies öffnet eine neue Registerkarte und hängt den Parameter Wert an die URL z. http://localhost:49328/AppCaseMgmt/CaseList/20150000015, aber wenn ich versuche, den Wert des Parameters auf der Aktivierung wie folgt zu lesen:

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

es nicht definiert ist.

Ich füge die Route dynamisch an den Router

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

verwenden, aber das sollte keinen Unterschied machen, so weit ich bewusst bin. (Ich habe versucht, stattdessen die Route zur config.map hinzuzufügen, aber ohne Erfolg). Ich fange an zu denken, dass das nicht möglich ist. Hat jemand irgendwelche Ideen?

Danke, Anthony

Antwort

4

ich diesen Fehler nicht reproduzieren kann. Allerdings möchte ich Ihr Vertrauen in Aurelia wiederherstellen, also hier ist eine funktionierende demo mit source entsprechend Ihrem Anwendungsfall.

Ich stieß auf ein ähnliches Problem vor bei der Wiederverwendung der gleichen ViewModel, aber in diesem Fall das activated Ereignis wurde nicht zum zweiten Mal aufgerufen. Ich habe gelöst, dass die VMs activationStrategy zu replace durch Änderung nach Cheat Sheet

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

Das könnte Sie näher bringen zu der Lösung.

+0

Hallo Marton. Vielen Dank für das Arbeitsbeispiel. Es ist eine große Hilfe zu wissen, dass es möglich ist. Leider funktioniert es in meinem Projekt immer noch nicht. Sobald ich nützliche Informationen dazu habe (oder wie ich es behoben habe), werde ich es hier veröffentlichen. –

+0

Das funktionierte für mich, aber ich musste für alle meine Routen tun, also fügte ich eine Option in der Routerdefinition hinzu, die in dieser Antwort erklärt wird: http://stackoverflow.com/a/41683970/815590 –

Verwandte Themen