2014-02-12 37 views
1

我正在從JSON API中加載數據。我的路線幾乎總是需要從服務器獲取新數據。我無法控制API格式。加載異步路由時發生Ember錯誤

我正在嘗試使用Ember Asynchronous Routing guide中描述的功能。具體來說,我在路由的model掛鉤中返回承諾,以便延遲轉移到路由,直到數據加載(並同時顯示加載指示符)。

所有內容(actions.loadingafterModel等)似乎都按照指南中的描述工作。但是,每當我轉換到我之前去過的路線時,我都會遇到showstopper錯誤。

這JSBin是使用包含在入門工具包的灰燼和它的依賴相同版本的一個小例子:

http://jsbin.com/zorey/1/edit?html,js,output

單擊第一個名字,回去,然後點擊第二個名字。您將在控制檯中看到以下錯誤:

Error while loading route: TypeError: Object #<Object> has no method 'apply' 

我在做什麼錯?

+1

從ember doc獲取:注意:具有動態段的路由只有在通過URL輸入時調用其模型掛接。如果通過轉換輸入路線(例如,在使用鏈接到Handlebars助手的情況下),則已經提供模型上下文並且不執行掛鉤。沒有動態段的路線將始終執行模型掛鉤。 URL:http://emberjs.com/guides/routing/specifying-a-routes-model/ – fanta

+0

@fanta謝謝!那麼有什麼正確的方法來做到這一點?爲什麼它在您第一次進入路線時有效? –

回答

2

看着你jsBin,問題就在這裏:

afterModel: function(response, transition) { 
    this.set('model', response); 
    console.log('DONE LOADING'); 
} 

你不應該設置模型中的「afterModel」掛鉤。它不僅沒有必要(模型被「模型」鉤子中的返回值設置),但它可能會導致一些鉤子模式的混亂問題。

只需卸下

this.set('model', response); 

線,你應該是金色的。

相關問題