2016-05-26 9 views
0

So ist die aurelia App aus dem main.jsAurelia Haken in den Router vor app.js

bootstrap(function(aurelia) { 
    aurelia.use 
    .standardConfiguration() 
    .developmentLogging(); 

    aurelia.start().then(() => aurelia.setRoot('app', document.body)); 
}); 

Bootstrap wird der Quellcode mir sagt, gibt es eine router() Methode, die Sie auf dem FrameworkConfiguration nennen kann, das ist das, was aurelia.use gibt Ihnen.

Aber die Implementierung gibt Ihnen keine Haken, es enthält nur die framework-templating-router.

Der Grund, warum ich einen Haken möchte, ist, weil ich einen API-Aufruf in der activate() der app.js machen möchte, aber ich möchte in einer Navigation Pipeline Middleware schieben, bevor der API-Aufruf erfolgt.

configureRouter heißt nach activate(), was offensichtlich ist. Dies bedeutet, dass ich Menüpunkte (api hinter autorisierte Wände) dynamisch injizieren kann, um meinen Anfangsbildschirm aufzubauen. Wenn ich eine 401 bekomme, lehnt es das activate() Versprechen ab - was ich will - aber was wäre besser, wenn der Pipeline-Schritt könnte Redirect('login').

Wenn ich benutzerdefinierte Login die activate() setzen würde, dann hätte ich zwei Orte der Umleitung, aber auch es passt einfach nicht in die Aurelia Design sehr gut.

Es gibt eine alternative Lösung, die Konfiguration des Routers bis zu einer untergeordneten Ansicht der app.js zu verzögern, aber es scheint nicht so schön.

+0

Bevor Sie eine mögliche Antwort auf Ihre Frage veröffentlichen .... Gibt es einen Grund, dass Sie den Router im app.js Konstruktor nicht konfigurieren können? Sie müssen die 'configureRouter' Methode überhaupt nicht verwenden. –

+0

oh wirklich ?! ist das möglich –

+0

@ jedd.ahyoung und wenn ich eine 'router.navigateToRoute ('')' in der 'activate' von App, wird es richtig routen –

Antwort

1

In Ihrem app.js, können Sie dies tun:

import {Router} from 'aurelia-router'; 

@inject(Router) 
export class App { 
    constructor (router) { 
     this.router = router; 
     this.router.configure(config => ...); 
    } 

    activate() { 
     ... 
    } 
} 

Im Wesentlichen .... Sie müssen die configureRouter Methode nicht verwenden. Es ist nur als Annehmlichkeit da. Die Verwendung des Konstruktors erlaubt in diesem Fall mehr Flexibilität.

Verwandte Themen