2012-10-05 26 views
0

我在我的路由器中有3個視圖。 索引視圖選擇viewtwo作爲默認值。燼路由不工作我想要如何

問題是當我去viewoneviewthree它通過索引路線!並加載viewto然後重新路由到任何一個我之前點擊viewoneviewthree和我的設置使每個視圖做一些事情的HTML,它則有離開之前撤消一些小故障,但事情是沒有同步過好(我測試過它與加載速度有多快有關,並且將javascript應用到它上面,因爲只有當我快速地點擊時,我的毛刺纔會出現)。

didInsertElement在被銷燬之前恰恰相反嗎?

此外,爲什麼要從索引路徑加載視圖?

index: Ember.Route.extend({ 
    route: '/', 
    redirectsTo: 'viewtwo' 
}), 

viewone: Ember.Route.extend({ 
    route: '/viewone', 
connectOutlets: function(router) { 
.... 

viewtwo: Ember.Route.extend({ 
    route: '/viewtwo', 
connectOutlets: function(router) { 
....  

viewthree: Ember.Route.extend({ 
    route: '/viewthree/:item_id', 
connectOutlets: function(router, item) { 
....  

回答

1

這是什麼也被打爛權之前didInsertElement相反?

willDestroyElement。看到這個頁面:http://emberjs.com/api/classes/Ember.View.html#event_willDestroyElement

此外,爲什麼viewto從索引路徑加載?

索引加載viewto的原因是因爲重定向,但我想你已經知道了。不知道你在這裏問什麼。

只要你所有的路線經過索引,你可能想發佈一個模擬這個問題的小提琴。 /viewthree不應該從您發佈的內容中輸入索引。如果您發佈可以重現問題的小提琴,它將幫助人們提供更好的答案。

+1

本質上,當路由器計算出應該導航到哪條路由時,它會創建一個像「root.viewthree」這樣的路徑。然後它依次進入每個狀態,將每個狀態設置爲好像沒有其他狀態遵循它一樣。這意味着它進入根狀態,看到redirectTo,並重定向。這意味着當前路徑現在是'root.viewtwo'(錯誤地)。然後它運行viewtwo的進入狀態(它認爲是正確的)。然後備份到實際上正確的(viewthree)並運行進入狀態(它將當前路徑從'root.viewtwo'改回到'root.viewthree'。 – bengillies