【发布时间】:2023-03-16 18:25:01
【问题描述】:
我有一个 JSON-Api 后端,我找不到处理继承对象的好方法,因为 Route 资源名称是父类,但负载中的“类型”属性对应子类。有效载荷示例(GET /api/pets):
{
"data": [
{
"id": "1",
"type": "cat",
"attributes": {
"name": "Tom"
}
},
{
"id": "2",
"type": "dog",
"attributes": {
"name": "Max"
}
]
}
现在,我用 Route 加载它:
# app/routes/pets.js
import Route from '@ember/routing/route';
export default Route.extend({
model() {
return this.get('store').findAll('pet');
}
});
型号:
# app/models/pet.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string')
});
# app/models/cat.js
import DS from 'ember-data';
import Pet from './pet';
export default Pet.extend({
});
# app/models/dog.js
import DS from 'ember-data';
import Pet from './pet';
export default Pet.extend({
});
最后,我想在一个简单的页面上显示它们:
# app/templates/devices.hbs
<h3>Pets list</h3>
{{#each model as |pet|}}
<h4>{{pet.name}}</h4>
{{/each}}
Route 很好地加载了对象(我在 Ember 检查器中看到了它们),但是没有 Pet 对象,因此它们没有被渲染。到这里,不知道怎么处理,不改api结构。
【问题讨论】:
标签: ember.js ember-data json-api ember.js-3