2013-01-01 48 views
6

Esiste una funzione equivalente per accedere a currentPath nella console con il nuovo router in ember?Accesso al nuovo router ember nella console

Prima, ero in grado di fare questo:

App.router.get("currentPath") 

Tuttavia, sembra che con il nuovo router, non è possibile accedere al router nello stesso modo. Di fatto App.router restituisce semplicemente undefined.

Qualsiasi aiuto qui sarebbe molto apprezzato.

edit:

In una nota correlata, perché non posso più accedere App.router e le sue proprietà, non riesco a capire come attivare manualmente cambiamenti di stato. Ad esempio,

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

non è più utilizzabile. Cosa stanno facendo tutti invece di questo ora?

risposta

11

ho trovato la risposta sepolto in questioni Github. Ripubblicazione qui per i posteri.

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

.. restituisce il router. È possibile accedere a transitionTo e handleURL per attivare manualmente le modifiche di stato. Non sei proprio sicuro di come ottenere lo stato attuale come prima, ma sembra che tu possa accedere alla proprietà currentHandlerInfos sul router per ottenere una matrice dei gestori correnti (duh).

Spero che questo impedisca a qualcun altro di strapparsi i capelli.

+1

Grazie! Ho cercato un po 'di tempo nella fonte ma non sono riuscito a trovarlo. Molto utile, grazie! –

+0

sì è stato un dolore nel sedere per capire .. – hankang

+0

questo non è più praticabile, in quanto è stato rimosso dalla api pubblica, a quanto pare.Il contenitore – hankang

-2

penso che questo dovrebbe fare

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

questa è una risposta piuttosto inutile .. sembra ignorare completamente il fatto che App.router non restituisce più nulla. Allora, qual è il punto di fare quello che stai facendo? – hankang

+0

Oopsie, Devo leggere la domanda correttamente: - /, App.router.get ("currentPath") non restituisce il percorso, quindi l'ho fatto, comunque questo per le versioni precedenti ... Hai sbirciato attraverso il codice sorgente? potrebbe aiutare –

+0

Va bene, apprezzo lo sforzo, anche se il mio problema rimane irrisolto. In effetti, ho guardato la fonte (un po 'in realtà), ma è una cosa difficile da cercare, poiché significa in effetti che sto cercando qualcosa che non è più implementato. Speravo che qualcuno conoscesse un altro modo per essere in grado di accedere a quelle proprietà in qualche modo. – hankang

4

A partire dalla build più recente, è possibile trovare il router e cambiare lo stato in questo modo:

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

o

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

Non so se questo è il modo consigliato (il router è molto un bersaglio mobile a questo punto), ma funziona per ora.

Problemi correlati