2014-03-25 24 views
3

我想用嵌套路由先渲染一個集合。一旦呈現集合,點擊一個項目(使用鏈接)呈現出口中的特定項目。迄今爲止這一切都很好。Ember Routing - 在頁面刷新時不調用模型鉤子

我有問題刷新頁面不會調用我的嵌套資源的'模型'鉤雖然。

從Ember的網站http://emberjs.com/guides/routing/specifying-a-routes-model/

如果用戶直接與URL 包含動態段訪問你的應用程序會發生什麼?例如,他們可能會重新加載 頁面,或將鏈接發送給一個朋友,點擊它。在那個時候,因爲我們從頭開始應用程序,所以顯示的實際的 JavaScript模型對象已經丟失;我們所有的是來自URL的 ID。

幸運的是,灰燼會從該網址提取任何動態細分爲您 ,並將它們傳遞作爲哈希到模型鉤作爲第一個參數

這裏是我的代碼:

Admin.Workqueues.App.Router.map(function() { 
    this.resource('delinquencies', function() { 
    this.resource('delinquency', { 
     path: '/:id' 
    }); 
    }); 
}); 

Admin.Workqueues.App.DelinquenciesRoute = Ember.Route.extend({ 
    model: function() { 
    // Does XHR here and fetches a collection of items to render. 
    // Returns a promise 
    } 
}); 

Admin.Workqueues.App.DelinquencyRoute = Ember.Route.extend({ 
    model: function (params) { 
    debugger; // This doesn't get called 
    } 
}); 

因此,使用此代碼,將/延遲列出了整個集合。點擊一個項目打開一個拖欠對象在/拖欠/ 3但現在刷新頁面不會調用拖欠路線的模型掛鉤。

我不知道我錯過了什麼。有任何想法嗎?如果它的事項,我使用:

恩貝爾:1.2.0

灰燼數據:1.0.0-beta.7 + canary.f482da04

把手:1.1.1

+0

而你正在碰到'拖欠/ 7'或類似的東西? – Kingpin2k

+0

@ kingpin2k是的! – Rajat

+0

重定向的失敗路由中是否還有其他內容,或者是當前正在使用的代碼之上的代碼?您確定DelinquencyRoute實際上是否包含在頁面中,Ember是不是爲您創建虛擬路線? – Kingpin2k

回答

2

您不應將資源定義爲子資源,而應將其作爲單獨資源。

Admin.Workqueues.App.Router.map(function() { 
    this.resource('delinquencies', function() {}); 
    this.resource('delinquency', { path: '/:delinquency_id' }); 
}); 

您的代碼現在工作的原因是因爲鏈接助手已經提供了上下文,所以模型掛鉤永遠不會被調用。

對於在DelinquencyRoute模型掛鉤,你應該使用這樣的事情:

return this.store.find('delinquency', params.delinquency_id); 

欲瞭解更多信息,看看導遊和入門教程: http://emberjs.com/guides/routing/defining-your-routes/(動態段段回答您的問題)