2013-01-01 56 views
6

是否有一個等同的功能來獲取控制檯中的currentPath與新的路由器在呃?訪問控制檯中的新的路由器

之前,我是能夠做到這一點:

App.router.get("currentPath") 

然而,似乎有新的路由器,你不能以同樣的方式訪問路由器。事實上,App.router只是返回undefined。

在這裏的任何幫助將不勝感激。

編輯:

在一個相關的說明,因爲我不能再訪問App.router和它的屬性,我無法弄清楚如何手動觸發狀態更改。例如,

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

不再可行。現在每個人都在做什麼而不是這個?

回答

11

我發現埋在GitHub上的問題的答案。在這裏重新張貼後人。

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

..返回路由器。您可以訪問transitionTo和handleURL手動觸發狀態更改。不完全知道如何像以前一樣獲取當前狀態,但似乎可以訪問路由器上的currentHandlerInfos屬性以獲取當前處理程序(duh)的數組。

希望這可以防止別人扯掉他們的頭髮。

+1

謝謝!我在源頭上搜索了一段時間,但無法找到它。非常有用的感謝! –

+0

是的,這是一個痛苦的屁股弄清楚.. – hankang

+0

這已經不再可行,因爲它已經從公共api中刪除,顯然。 – hankang

-2

我想這應該做

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

這是一個相當無益的答案..你似乎完全忽略了App.router不會返回任何東西的事實。那麼做你在做什麼的重點呢? – hankang

+0

Oopsie,我必須正確地閱讀這個問題: - /,App.router.get(「currentPath」)不會返回路徑,所以我做了這個,反正以前的版本是這樣的......你看過嗎?通過源代碼?它可能會幫助 –

+0

沒關係,我很欣賞這種努力,儘管我的問題仍未解決。實際上,我已經看到了源代碼(實際上有一點),但是要查找它是一件棘手的事情,因爲它實際上意味着我正在尋找一些不再實現的東西。我希望有人知道另一種方式能夠以某種方式訪問​​這些屬性。 – hankang

4

至於最新版本的,你可以找到路由器並更改像這樣的狀態:

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

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

我不知道這是推薦的方式(路由器在這一點上是非常動人的目標),但它現在起作用。