So ist die aurelia App aus dem main.js
Aurelia 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.
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. –
oh wirklich ?! ist das möglich –
@ jedd.ahyoung und wenn ich eine 'router.navigateToRoute ('')' in der 'activate' von App, wird es richtig routen –