2013-07-02 37 views
4

我試圖使用Ember.js一個小的演示現場觀看大型無脊椎動物的gigapans(例如like this one)「無法調用未定義‘connectOutlet’」。每個被taxonomic rank一個分類網站,在這種情況下,只有目,科,屬和(因爲他們都是同一類的,我們沒有種級別的鑑定)。這是一個小地盤,只有13個屬。這裏的什麼也沒有,但導航一個簡單的工作示例:類型錯誤和Ember.js

http://jsbin.com/ihapaw/10

主頁列出了所有三個數量級,並且在每一個有家庭,然後屬。點擊一下,你會看到我正在使用動態段來獲取遵循/ ORDER_ID/FAMILY_ID/GENUS_ID模式的URL方案。

我想現在什麼補充的是用戶從中可以選擇跳轉到任何職級或屬菜單。這個設計需要用戶點擊一個菜單按鈕,一個div會出現,並列出所有的訂單,家庭和屬,用戶可以點擊跳轉到他們想要的頁面。填充菜單面板,使其顯示onclick等等不是問題。我遇到的麻煩是使用菜單中的鏈接導致Ember錯誤,我無法理解。這裏有一個更新的演示:

http://jsbin.com/ihapaw/14

在該演示中,假裝藍色區域是點擊菜單按鈕後顯示的菜單面板。如果你打開JavaScript控制檯,然後單擊藍色菜單區域中的「Brachycentrus」屬,然後單擊菜單中的「執行Tallaperla」屬(的最後一個),你會在控制檯看到下面的錯誤:

Error while loading route: TypeError {}

Uncaught TypeError: Cannot call method 'connectOutlet' of undefined

對於上述再現步驟,我也看到在菜單下面的內容區域是,點擊「Tallaperla」屬後,順序是正確的更新爲「Plecoptera」,但家族和屬不是。我想這是解決問題的線索,但不知道它的含義。我也許應該補充一點,它不僅僅是造成這個問題的那兩個屬 - 如果在菜單區域點擊足夠的位置,很容易重新編制錯誤。這個repro例子是我能找到的最簡單,最快速的例子。

我使用Ember 1.0.0-rc.6,Ember Data 0.13和Handlebars 1.0.0-rc.4。

+1

我沒有機會深入研究你的jsbin,但通常當我遇到這種問題時,這是因爲燼正在期望以我不期待的方式命名事物。通過設置LOG_ACTIVE_GENERATION和LOG_VIEW_LOOKUPS,您可以更好地瞭解在您點擊應用程序時發生了什麼,可能會幫助您追蹤此情況。有關這些選項的詳細信息,請參閱http://blog.emberwatch.com/2013/06/13/logging-the-magic-in-ember-js.html –

+0

謝謝,Mike,我認爲這很有幫助。我使用日誌語句更新了jsbin(http://jsbin.com/ihapaw/16),現在當點擊第一個屬性時,可以看到爲訂單,系列和屬性渲染語句。但是,當點擊第二個屬性時,我只能看到訂單的渲染語句,然後用TypeError炸掉。 –

回答

0

我看着你的代碼,它看起來不錯。我相信這是我用ember嵌套路由所面臨的錯誤。有關於它的討論here。也許你應該附和。:)

我發佈一個臨時的解決有沒有適合我的工作,但我的路線只有2級深,所以這是好的工作。您的嵌套深度爲3級,該修補可能對您無效。

解決問題的另一種方法是使用具有多個動態段的單個資源。

this.resource('species', { path: '/:order_id/:family_id/:genus_id'}); 

你會在控制器失去彈性,不必把一切都放在一個控制器,路徑將需要在此基礎上params存在於find做更多的工作。但它可能工作!

+0

謝謝,Darshan,我會試試這個。我的網站實際上需要4級(因爲每個類都有多個視圖,例如背部,腹部等),所以如果Ember無法處理深層嵌套的路線,那麼現在可能是我去購物的時候了。但是,謝謝你的提示,我會試一試。 –