Ember:使用 ember-data 访问 setupController 中的旁加载数据
Ember: accessing sideloaded data in setupController with ember-data
我正在使用 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
。但是我无法访问路由 setupController
中的 model.products
。我得到的错误是:
TypeError: Cannot read property '_relationships' of undefined
这让我很困惑!我的路由 model
hook 是:
model(params) {
return this.get('store').queryRecord('category', {
id: params.id
})
}
setupController
挂钩(导致错误)是:
setupController(controller, model) {
controller.set('results', model.products);
}
'category'型号:
export default DS.Model.extend({
products: hasMany('product'),
categoryName: attr('string')
});
'product'型号:
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
,这样我就可以将其命名为其他名称。任何帮助表示赞赏。
关系returns承诺。所以要得到你需要使用 then
的结果。但是在模板中访问它是可行的,因为模板默认是 promise 感知的。
setupController(controller, model) {
//controller.set('results', model.products);
model.get('products').then((result) => {
controller.set('results',result);
});
}
请阅读 relationships as promises 指南。
我正在使用 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
。但是我无法访问路由 setupController
中的 model.products
。我得到的错误是:
TypeError: Cannot read property '_relationships' of undefined
这让我很困惑!我的路由 model
hook 是:
model(params) {
return this.get('store').queryRecord('category', {
id: params.id
})
}
setupController
挂钩(导致错误)是:
setupController(controller, model) {
controller.set('results', model.products);
}
'category'型号:
export default DS.Model.extend({
products: hasMany('product'),
categoryName: attr('string')
});
'product'型号:
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
,这样我就可以将其命名为其他名称。任何帮助表示赞赏。
关系returns承诺。所以要得到你需要使用 then
的结果。但是在模板中访问它是可行的,因为模板默认是 promise 感知的。
setupController(controller, model) {
//controller.set('results', model.products);
model.get('products').then((result) => {
controller.set('results',result);
});
}
请阅读 relationships as promises 指南。