2014-10-20 66 views
3

回來,我不明白爲什麼裝載模板不會在以下情況下加載燼:裝載模板不能正常工作時的承諾從應用途徑

App = Ember.Application.create() 

App.Router.map -> 
    this.resource 'dashboard', {path: "/"} 

App.ApplicationRoute = Ember.Route.extend 
    beforeModel: -> 
    new Ember.RSVP.Promise (resolve) -> 
     Ember.run.later -> 
     resolve() 
     , 3000 

App.DashboardRoute = Ember.Route.extend  
    model: -> 
    ['red', 'yellow', 'blue'] 

http://emberjs.jsbin.com/jageg/2/edit?html,js,output

documentation我的理解是,如果具有路徑dashboard的路徑返回不能立即解決的承諾,Ember將嘗試在其可以轉換的層次結構中找到加載路徑。

謝謝。

+0

我想這是很好,但似乎[根據設計禁用](https://github.com/emberjs/ember.js/blob/90397ef15453da1cba1f6bda374e075f054bfdf4/packages/ember/tests/routing/ substates_test.js#L195)。 – sandstrom 2015-07-09 13:39:27

回答

2

是的,父資源的加載路線將被放入父資源的{{outlet}}。不幸的是,你阻止了最重要的資源,所以Ember無法渲染應用程序模板,因此它正在加載路線。

如果你阻擋了一個較低的級別,它將會碰到應用程序資源的加載路線,這只是loading

http://emberjs.jsbin.com/babuzi/edit?html,js,output

+0

非常感謝您的回覆。在我現實生活中的例子中,我正在應用程序路徑中加載當前用戶,如果服務器出於某種原因關閉了服務器,我以後將無法顯示「加載」模板,也不能顯示「錯誤」模板。那麼加載當前用戶數據的最佳方法是什麼?我需要當前用戶,因爲那時我將根據用戶的狀態執行授權策略。 – Alberto 2014-10-21 02:41:09

+0

我遇到完全相同的問題。你有沒有找到解決這個問題的好方法?我能想到的唯一解決方案是將整個應用程序放在一個嵌套路線(「example.com/app」)中,這樣您就可以將應用程序模型移動到應用程序..不覺得是正確的解決方案雖然.. – 2015-07-17 13:55:47

+0

在最新版本的Ember中,加載路線位於應用程序模板上方。 – Kingpin2k 2015-07-17 19:53:00