2015-11-13 15 views
7

Sto usando il framework Aurelia. Voglio recuperare informazioni su navigationInstruction nel file app (app.ts/app.js) ogni volta che l'utente naviga verso una nuova rotta/pagina.Identifica il percorso corrente in Aurelia

Ho provato a recuperare queste informazioni negli eventi del ciclo di vita (attivazione e binding) dell'app, ma non sono disponibili informazioni.

Qualcuno può aiutarmi a risolvere questo problema.

Grazie in anticipo.

risposta

9

iscriversi alla navigazione del router "successo" dell'evento:

import {EventAggregator} from 'aurelia-event-aggregator'; 
import {inject} from 'aurelia-dependency-injection'; 

@inject(EventAggregator) 
export class App { 
    constructor(eventAggregator) { 
    this.eventAggregator = eventAggregator; 
    } 

    navigationSuccess(event) { 
    let instruction = event.instruction;  
    // todo: do something with instruction... 
    } 

    attached() { 
    this.subscription = this.eventAggregator.subscribe(
     'router:navigation:success', 
     this.navigationSuccess.bind(this)); 
    } 

    detached() { 
    this.subscription.dispose(); 
    } 
} 

Ecco una versione leggermente diversa utilizzando vincolanti e ES6 destrutturazione funzione ES7:

import {EventAggregator} from 'aurelia-event-aggregator'; 
import {inject} from 'aurelia-dependency-injection'; 

@inject(EventAggregator) 
export class App { 
    constructor(eventAggregator) { 
    this.eventAggregator = eventAggregator; 
    } 

    navigationSuccess({ instruction }) { 
    // todo: do something with instruction... 
    } 

    attached() { 
    this.subscription = this.eventAggregator.subscribe(
     'router:navigation:success', 
     ::this.navigationSuccess); 
    } 

    detached() { 
    this.subscription.dispose(); 
    } 
} 
+0

roba buona per quelli di noi costruire nav manualmente - grazie – mujimu