Wenn der Benutzer zuerst meine Aurelia Web App startet, muss ich localStorage überprüfen, um zu sehen, ob meine App ihren letzten Status wiederherstellen muss. Ist dies der Fall, müssen interne Modellwerte von localStorage festgelegt und die Route wiederhergestellt werden. Wenn nicht, muss nur die Route auf die anfängliche Route ("Spiel" genannt) festgelegt werden. Also dachte ich, ich könnte meinen Router config in app.js wie folgt aufgebaut:Aurelia View-Modell ohne Sicht?
config.map([
{ route: '', name: 'launcher', moduleId: 'launcher'},
{ route: 'game', name: 'game', moduleId: 'game-view'},
......
Wo das Launcher-Modul wird tun, um diese Initialisierung.
launcher.js (teilweise Pseudo-Code):
import {
inject,
noView
} from "aurelia-framework";
import {
Router
} from 'aurelia-router';
@noView
@inject(Router)
export class Launcher {
constructor(router) {
Get localStorage values, including lastState;
if (need to restore the past state) {
router.navigateToRoute(lastState);
} else {
router.navigateToRoute('game');
}
}
}
Das Problem ist, brauche ich nicht wirklich einen Blick für dieses Modul, aber wenn ich nicht über eine launcher.html Datei haben, Aurelia wirft ein Fehler (obwohl alles in Ordnung ist). Ich dachte, der NoView Decorator würde den Trick machen, aber das tat es nicht.
Gibt es eine Möglichkeit, ein navigierbares Modul ohne Sicht zu haben? Gibt es einen besseren Weg, dies zu tun?
Ich würde keine View-Modell für diese Logik verwenden es keinen Sinn macht. Sie können dies in einem Router-Hook oder sogar in Ihrer App tun. Sie können einen Dienst anrufen, der dies für Sie erledigt. –
@PWKad Ja. Scheint nicht wie ein guter Weg, dies zu tun. Ich habe versucht, router.navigateToRoute in meiner app.js anzurufen, aber es hat nicht funktioniert. Vielleicht habe ich es zur falschen Zeit angerufen. Ich habe keine Router-Haken verwendet. Kannst du auf Infos zu diesen hinweisen? –
@PWKad Ich könnte die Route in der config.map zu ['', 'game'] ändern und dann canActivate zu meinem Spiel-View-Modell hinzufügen. Wenn es keinen gespeicherten Zustand gibt, würde ich nur wahr zurückkehren. Wenn ja, würde ich annehmen, dass ich einen Navigationsbefehl (nach den Dokumenten) zurückgeben würde. Dann ist meine Frage, was ist ein Navigationsbefehl? –