2016-04-16 3 views
4

Ich habe Navbar-Komponente, die ich in einer application.hbs platziert habe, so dass es immer sichtbar sein sollte.Aber ich möchte den Titel der Navbar mit jeder Seite, die ich besuchen (sagen, ich bin auf der Index-Seite sollte es sagen, "Home", wenn ich auf der Profilseite bin, sollte es Profil sagen, etc). Nun, was passiert ist, ist Navbar Titel bleibt immer "Home" für die ganze Seite.Dies passiert, weil die Die navbar wird während der Zeit, in der die Seite im Browser geladen wird, nur noch gerendert, und danach ändert sich die Seite nicht mehr entsprechend der Seite.Nicht in der Lage, die Navbar Elemente in Ember dynamisch zu machen

application.hbs

{{top-navbar dp_url=model.profile.dp_url first_name=model.profile.first_name title=title}} 

{{outlet}} 

Hier die ich den Wert des Titels am Berechnung je nachdem, welche Seite der Benutzer.

application.js (Controller)

if (currentPage === "" || currentPage === "#"){ 
     currentState.set('title',"Home") 
} 
else if(currentPage === "Userprofile"){ 
     console.log('myStudio'); 
     currentState.set('title',"UserProfile"); 
} 

In hier die currentpage hat die aktuelle URL der App und ich bin im Vergleich und den Wert des Titels für navbar entscheiden.

Der Wert für die obere Navigationsleiste wird jedoch nur zum ersten Mal berechnet, wenn der Benutzer die Anwendung im Browser lädt und nicht, wenn ich von einer Route zu einer anderen gehe.

Ich habe auch versucht, die Ember.Evented aber nicht in der Lage, es zu lösen.

Antwort

0

Ich weiß nicht, was Ember.js und Ember-data Version verwenden Sie, currentState ist deprecated since 2.1, sieht sowieso so aus, als ob Sie eine private Methode für Ember Interna verwenden und nicht in einer Anwendung verwendet werden soll.

Eine mögliche (aber vielleicht unnötig kompliziert) Art und Weise, was Sie erreichen wollen, ist:

  1. ein Modell erstellen mit den Informationen, die Sie in der Navigationsleiste mutieren wollen (z navbar-data).
  2. Erstellen Sie in der Route, in der die Navigationsleiste gerendert wird, einen Datensatz mit einer festen numerischen ID (z. B. store.createRecord('navbar-data', { id: 1, title: "index" })).
  3. Übergeben Sie den erstellten Datensatz an die Komponente (anstatt nur eine Zeichenfolge).
  4. Immer wenn Sie ändern möchten, suchen Sie den Datensatz mit store.peekRecord('navbar-data', 1) und ändern Sie den Wert, den Sie in der Navigationsleiste ändern möchten.

Natürlich ist der Datensatz, den Sie für das darf verwenden nicht mit record.save() gespeichert werden.

Verwandte Themen