2016-06-06 18 views
1

Ich versuche, den Titel festzulegen, aber in diesem Code unten funktioniert es an einer Stelle und nicht an anderer Stelle. Ich möchte den Produktnamen erhalten und den Titel festlegen. Gibt es einen anderen Weg, es zu tun?Einstellen der Seitentitel nach der Aktivierung in Aurelia

activate(params: any, route, navigationInstruction) {  
     //route.navModel.router.title="test"; //works here 
     this.api.pull<Product>([params.id]).then(items => { 
       items.forEach(item=> 
       { 
        if(item.id == params.id) 
         route.navModel.router.title = item.name //does NOT work here 
       }); 

     }); 
    } 
+1

versuche 'return this.api.pull', sieht so aus als wäre title nach activate hook gesetzt, also musst du' route.navModel.router.title' setzen, bevor du die hook finish execution aktivierst – valichek

+0

@valichek Danke, kannst du bitte hinzufügen dies zur Antwort, damit ich es markieren kann. – genericuser

+0

auch, überprüfen Sie meinen Vorschlag :) –

Antwort

0

Versuchen zurückzukehren Versprechen von api Anruf, sieht aus wie Seitentitel nach activate Haken gesetzt ist, so dass Sie route.navModel.router.title setzen müssen, bevor activate Haken Ausführung beendet

activate(params: any, route, navigationInstruction) {  
    //route.navModel.router.title="test"; //works here 
    return this.api.pull<Product>([params.id]).then(items => { 
      items.forEach(item=> 
      { 
       if(item.id == params.id) 
        route.navModel.router.title = item.name //does NOT work here 
      }); 

    }); 
} 
5

Versuchen Sie, die setTitle Methode auf die Verwendung von NavModel:

activate(params, routeConfig) { 
    return this.api.pull<Product>([params.id]).then((items) => { 
    let item = items.find((item) => item.id == params.id); 
    if (item) { 
     routeConfig.navModel.setTitle(item.name); 
    } 
    } 
} 

im obigen Fall sind Ziehen Sie ein Produkt mit einer nach unten d Setzen Sie dann den Seitentitel auf den Namen des Elements. In diesem Anwendungsfall möchten Sie wahrscheinlich den Titel navModel festlegen. wenn Sie die Router Titel ändern wirklich wollen jedoch nicht nur die aktuelle navModel, können Sie folgendes tun:

import { inject, Router } from 'aurelia-framework'; 

@inject(Router) 
export class MyViewModel 

    constructor(router) { 
     this.router = router; 
    } 

    activate(params, routeConfig) { 
     return this.api.pull<Product>([params.id]).then((items) => { 
     let item = items.find((item) => item.id == params.id); 
     if (item) { 
      this.router.title = item.name; 
      this.router.updateTitle(); 
     } 
     } 
    } 
} 

weitere Informationen im Router docs sehen.

+0

Wenn diese Antwort für Sie hilfreich ist, upvote und akzeptieren –

+0

Dies ändert den NavModel-Titel. Ich möchte den Router-Titel ändern. Vielen Dank! – genericuser

+0

Ich habe meine Antwort aktualisiert, bitte überprüfe sie und markiere sie als korrekt. :) –