2015-07-16 15 views
10

Nella mia classe ViewModel, come faccio a ottenere un riferimento al router attuale?Come arrivare riferimento al router corrente dal ViewModel

Quello che voglio fare è ottenere il ModuleId corrente.

In Durandal, c'era system.getModuleId, ma non c'è nessun sistema di Durandal, quindi immagino che il router sta per avere queste informazioni.

risposta

3

Un modo (non sono sicuro, quello ottimale) per accedere corrente moduleId è in activate gancio della classe:

activate(params, routeConfig) { 
    console.log(routeConfig.moduleId); 
} 
+0

è 'activate' su tutte le classi? se sì, potresti eventualmente decorarlo? (Questo potrebbe essere una domanda completamente diversa –

+0

sì, c'è 'activate' gancio disponibili per ogni classe ViewModel. Non sono sicuro di decorazione di esso. È anche possibile iniettare router in viewmodel e controllarne la' currentInstrustion.config.modelId', ma non è bello, – dfsq

+0

restituirà solo la configurazione per il percorso corrente, non il router. @Greg La risposta Gum è quella corretta. – vidriduch

1

Il modo per ottenere un riferimento al router corrente:

import {inject} from 'aurelia-framework' 
import {router} from 'aurelia-router' 

@inject(router) 
constructor(router) 
{ 
    this.router = router; //Do something with router. 
} 

Nota: non iniettare "AppRouter" È un router diverso. Se aggiungi un percorso ad AppRouter, non funzionerà. Funzionerà se si importa il router.

Problemi correlati