2013-01-01 7 views
6

Gibt es eine äquivalente Funktion, um den currentPath in der Konsole mit dem neuen Router in ember zu erfassen?Zugriff auf den neuen Ember-Router in der Konsole

Vorher konnte ich dies tun:

App.router.get("currentPath") 

Allerdings scheint es mit dem neuen Router, können Sie den Router nicht in der gleichen Art und Weise zugreifen können. Tatsächlich kehrt App.router einfach undefiniert zurück.

Jede Hilfe hier würde sehr geschätzt werden.

edit:

über einen entsprechenden Hinweis, weil ich nicht mehr App.router zugreifen kann und seine Eigenschaften, ich kann nicht herausfinden, wie manuell Änderungen Zustand auszulösen. Zum Beispiel

App.router.transitionTo("some.state") 

ist nicht mehr lebensfähig. Was machen jetzt alle anderen?

Antwort

11

ich die Antwort in Github Fragen begraben gefunden tun sollten. Hier für die Nachwelt erneut posten.

App.container.lookup('router:main').router 

..gibt den Router zurück. Sie können auf transitionTo und handleURL zugreifen, um Statusänderungen manuell auszulösen. Ich bin mir nicht sicher, wie ich den aktuellen Zustand wie zuvor erhalten soll, aber es scheint, als könnten Sie auf die Eigenschaft currentHandlerInfos auf dem Router zugreifen, um ein Array der aktuellen Handler (duh) zu erhalten.

Hoffe, dies verhindert, dass jemand anderes ihre Haare ausreißt.

+1

Danke! Ich habe einige Zeit in der Quelle gesucht, konnte sie aber nicht finden. Sehr hilfreich danke! –

+0

Ja, es war ein Schmerz in den Hintern, um herauszufinden .. – hankang

+0

Dies ist nicht mehr lebensfähig, wie es aus der Öffentlichkeit API offenbar entfernt wurde. – hankang

-2

ich denke, das

function getCurrentPath(){ 
    str = "currentState.parentState" 
    arr = [] 
    arr.push(App.router.get("currentState.name")) 
    while(true){ 
    name = App.router.get(str+".name"); 
    arr.push(name) 
    str += ".parentState"; 
    if(name == "root"){ 
     break; 
    } 
    } 
    return arr.reverse().join(".") 
} 

currentPath = getCurrentPath(); 
+0

Dies ist eine ziemlich nicht hilfreiche Antwort .. Sie scheinen völlig ignoriert die Tatsache, dass App.router nichts mehr zurückgibt. Was würdest du tun, was du tust? – hankang

+0

Oopsie, ich muss die Frage richtig lesen: - /, App.router.get ("currentPath") gibt den Pfad nicht zurück, also tat ich das, jedenfalls diese für die vorherigen Versionen ... Hast du einen Blick darauf geworfen durch den Quellcode? es könnte helfen –

+0

Es ist okay, ich schätze den Aufwand, obwohl mein Problem ungelöst bleibt. Ich habe tatsächlich die Quelle (ein bisschen tatsächlich) angeschaut, aber es ist eine schwierige Sache, nach etwas zu suchen, da es bedeutet, dass ich nach etwas suche, das nicht mehr implementiert ist. Ich hatte gehofft, jemand wüsste einen anderen Weg, um irgendwie auf diese Eigenschaften zugreifen zu können. – hankang

4

Ab dem neuesten Build, können Sie den Router finden und ihren Zustand ändern, wie so:

App.Router.router.transitionTo('posts.comments'); 

oder

App.Router.router.handleURL('/posts/comments'); 

Ich weiß nicht, ob dies die empfohlene Methode ist (der Router ist an dieser Stelle sehr bewegendes Ziel), aber es funktioniert für jetzt.

Verwandte Themen