2017-03-09 22 views

回答

4

如果你返回正常的對象,那麼模型鉤子就不會等待Promise來重新調用,所以它會立即返回。

model: function() { 
     return { 
      "first-levels":this.get('store').findAll('student') 
     }; 
    } 

但是,如果你回到它像下面的,那麼模型鉤子將等待無極解決,

model: function() { 
    return this.get('store').findAll('student'); 
} 

注:findAll從商店得到的結果,並立即在背景回報,它將要求適配器再次獲取並更新商店。這個行爲可以通過使用this.get('store').findAll('student',{reload:true})來控制更多細節請參考findAll api guide

+0

就我所知他們兩個人都是一樣的(你有返回模型的方式),因爲在這兩種情況下最終我們返回this.get('store')。的findAll( '學生');只有格式不同(例如:當你從句柄中調用它時,第一個將稱爲model.first-levels,然後將以第二種調用方式等於模型) – Prageeth

+1

閱讀此燼guide指南解釋https://guides.emberjs .com/v2.11.0/routing/specified-a-routes-model /'通常,模型鉤子應該返回一個Ember數據記錄,但它也可以返回任何承諾對象(Ember數據記錄是承諾),或者一個普通的JavaScript對象或數組。 Ember將在呈現模板之前等待數據完成加載(直到承諾解決)。 – kumkanillam

+0

這是否僅僅表示當我調用this.get('store')。findAll('student')它實際上總是一個異步調用,它將在後臺運行,但是直到數據提取完成(直到解析爲止)模板纔會呈現。 – Prageeth