我正在使用RESTAdapter并试图找出如何访问侧载数据 有效载荷的样本是:
{
"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"
}]
}
我可以在ember检查器中看到'category'和'product'数据模型(和数据),所以我知道它们正在被加载。
我甚至可以访问模板model.products
中的产品。但我无法访问路线model.products
中的setupController
。我得到的错误是:
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
,所以我可以将其称为其他内容。任何帮助表示赞赏。
答案 0 :(得分:2)
关系返回承诺。因此,要获得结果,您需要使用then
。但是在模板中访问它将起作用,因为默认情况下模板是承诺的。
setupController(controller, model) {
//controller.set('results', model.products);
model.get('products').then((result) => {
controller.set('results',result);
});
}