2016-07-07 69 views
1

訪問灰燼模型數據,我使用Ember.RSVP.hash訪問多個模型在灰燼控制器:如何正確地從控制器

export default Ember.Route.extend({ 
    model() { 
     return Ember.RSVP.hash({ 
      categories: this.store.findAll('category') 
      languages: this.store.findAll('language'), 
      requirementTypes: this.store.findAll('requirement-type') 
     }); 
    }, 

    setupController: function(controller, models) { 
     controller.set('categories', models.categories); 
     controller.set('languages', models.languages); 
     controller.set('requirementTypes', models.requirementTypes); 
    } 
}); 

我已經無情地用Google如何在我的控制器正常訪問這個數據模型。迄今爲止我發現的唯一方式感覺太瘋狂了。我只想訪問從我的api返回的原始HTTP響應數據。

然而,當我寫this.get(「類」)中,我得到的回覆是相當醜陋,是一個更爲複雜的對象不是我的API返回的內容:

console.log(this.get('categories'))

的「 InternalModel」條目包含的是從我的API返回的_data屬性的實際數據:

InternalModel entry details

是否還有更好的,RECO修改的方式來訪問從我的api返回並通過關聯的路由傳遞給控制器​​的模型數據?我期望能夠訪問我的api返回的確切數據,如this.get('categories'),並立即訪問我的api發送的模型數據。

+0

爲什麼你想要訪問確切的api響應?難道你不能只是定義你的模型來獲得你需要的所有數據嗎?您將無法使用ember存儲方法訪問確切的響應,您需要使用常規的ajax請求才能執行此操作。 – Igor

+0

我正在使用Ember Data來製作api請求,然後將該模型數據傳遞給控制器​​。我做過的方式真的是最好的方式嗎?如果是這樣,我不確定我是否理解Ember Data的觀點,並且更願意僅僅使用手動HTTP請求。 – lkgarrison

+0

您可以使用'controller.setProperties(models)'在一次傳遞中設置所有三個屬性' –

回答

3

是的,這是正確的方法。 Ember數據是一個用於餘燼的持久層,你不必使用它,我不想。但它非常有用,關鍵是要通過模型對象訪問數據。

在你的情況下,如果你循環訪問模型結果中的一個集合,你會得到包含你的數據的燼記錄。所以在控制器中你可以這樣做:

this.get('categories').forEach(category => { 
    // Do something with category data, i.e. 
    console.log('Category name:', category.get('name')); 
}); 
相關問題