2017-04-04 5 views
1

私はRESTAdapterを使用しており、サイドロードされたデータにアクセスする方法を理解しようとしています。Ember:ember-dataを使用してsetupControllerのサイドロードされたデータにアクセスする

{ 
    "category": { 
     "categoryName": "test category", 
     "id": 6, 
     "products": [ 
      4419, 
      502, 
      3992 
     ] 
    }, 
    "products": [{ 
     "description": "Whatevs", 
     "id": 4419, 
     "name": "Product 1", 
     "price": 114.95, 
     "skuid": "S21046" 
    }, { 
     "description": "Whatevs", 
     "id": 502, 
     "name": "Product 2", 
     "price": 114.95, 
     "skuid": "SOLS2594" 
    }, { 
     "description": "Whatevs", 
     "id": 3992, 
     "name": "Product 3", 
     "price": 114.95, 
     "skuid": "S21015" 
    }] 
} 

私は燃えさしインスペクタの「カテゴリ」と「製品」データモデル(およびデータ)を見ることができるので、私は、彼らがロードされている知っている:ペイロードの
サンプルです。

テンプレートmodel.productsの商品にアクセスすることさえできます。ただし、setupControllermodel.productsにアクセスできません。私が得るエラーは:

TypeError: Cannot read property '_relationships' of undefined 

これは本当に私を困惑させるものです!マイルートmodelフックは次のとおりです。

model(params) { 
    return this.get('store').queryRecord('category', { 
     id: params.id 
    }) 
} 

(エラーが発生します)setupControllerフックは次のとおりです。

setupController(controller, model) { 
    controller.set('results', model.products); 
} 

'カテゴリ' モデル:

export default DS.Model.extend({ 
    products: hasMany('product'), 
    categoryName: attr('string') 
}); 

'製品' モデル:

export default DS.Model.extend({ 

    name: attr('string'), 
    skuid: attr('string'), 
    price: attr('number'), 
    description: attr('string') 

}); 

(私はルートから「setupController」フックを削除した場合、動作します)マイテンプレート:

{{#each model.products as |product|}} 
{{product.name}} {{product.skuid}}<br /> 
{{/each}} 

私は何か他のものにそれを呼び出すことができるように、ルートのsetupControllerからmodel.productsにアクセスできるようにしたいと思います。どんな助けもありがたい。

答えて

2

リレーションシップは約束を返します。結果を得るにはthenを使用する必要があります。テンプレートはデフォルトで約束しているため、テンプレートでアクセスすることはできます。

setupController(controller, model) { 
    //controller.set('results', model.products); 
    model.get('products').then((result) => { 
    controller.set('results',result); 
    }); 
} 

relationships as promisesガイドをお読みください。

関連する問題