Aurelia lade Routen dynamisch / von fetch

Ich möchte Menüoptionen dynamisch laden. also frage ich mich den besten Ansatz

Ich kann den folgenden Code verwenden, um Routen hinzuzufügen, nachdem die Seite geladen wurde. Dies funktioniert für die normale Navigation, jedoch nicht während einer Aktualisierung.

Kann der Router ein Versprechen zurückgeben / Wie lade ich Menüpunkte in die Route?

 @inject(HttpClient)
 export class DocumentMenu {
  router: Router;
  documents : IDocument[];
  heading = 'Document Router';

  constructor(public http: HttpClient) {}

 activate(): void {

    this.http.fetch('http://localhost:17853/Document/GetDocuments?folderID=13244')
      .then<IDocument[]>(response => response.json())
      .then<IDocument[]>(docs => {    
      if ( docs ){
        for( var doc of docs){
          this.router.addRoute( { route : doc.DocumentID.toString(), name : doc.Name, moduleId: './documents/document', nav:true, title: doc.Name });
        }
        this.router.refreshNavigation();
      }
      return docs;
    });

 }

configureRouter(config: RouterConfiguration, router: Router) {

  var routes = new Array();
  routes.push( 
  { route: 'index', name: 'index-name', moduleId: './documents/index', nav: false, title: 'Documents' } );
  routes.push(       { route: '', redirect: 'index' } );

  config.map( routes );
  this.router = router;
}
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage