2017-08-26 2 views
0

Ich habe meine benutzerdefinierte Ember-Komponente, die in einem Controller ist.Erhalten Sie Zugriff auf aktuelle Ember Route innerhalb der Komponente

Jetzt versuche ich, Name der aktuellen Route

So dynamisch erreiche ich den Controller Zugriff zu erhalten

this.get('parentView') 

verwenden, aber ich bin nicht in der Lage die aktuelle Route Namen nach diesem zu erhalten. Wie erhalte ich den aktuellen Routennamen? Ich versuchte

this.get('parentView').routeName 

Antwort

1

Zunächst einmal tun, sollten Sie keine Logik entsprechend der aktuellen Route in einer Komponente implementieren. Ihre Komponenten sollten nicht wissen, auf welchem ​​Weg sie platziert wurden. Aber natürlich kann es einige Ausnahmefälle, wie breadcrump Komponenten, Menükomponenten ...

Wie auch immer, die Antworten auf Ihre Frage lautet:

  1. von application controller mit:

application controller hat eine currentRouteName Eigenschaft.

können Sie application controller verwenden wie:

Ember.getOwner(this).lookup('controller:application').get('currentRouteName') 
  1. von router mit:

Entweder die private-router service Ihrer Komponente oder Lookup für die Router-Instanz injizieren wie beispielsweise:

Ember.getOwner(this).lookup('router:main').get('currentRouteName'); 
+1

Sie können keinen Controller außer Controller-Instanz injizieren. – kumkanillam

1

In ember 2.15 wird dafür ein Router-Dienst sein. Derzeit gibt es is a polypill for older ember versions.

Bearbeiten: Ember 2.15 wurde am 1. September 2017 freigegeben. Sie finden einige Informationen über RouterService in release notes und api documentation. Bitte beachten Sie, dass in api-Dokumenten derzeit keine Eigenschaften aufgeführt sind, die aufgrund fehlender Dokumentation im Code verfügbar sind. Zusätzlich zu ember-router-service-polyfill können Sie in früheren Releases auch auf RoutingService über -routing zugreifen.

Verwandte Themen