Reputation: 203
The API I call returns data like:
{
"data": {
"id": "5",
"type": "person",
"attributes": {
"name": "John",
"pet": {
"typeOf": "cat",
"petName": "Furry"
},
...
models/person.js:
name: attr('string'),
pet: attr()
template:
{{input type="text" class="form-control" value=model.pet.petName}}
This works for name but not for pet. Do I have to create a pet model even though there's no API call for pets? Will this even work, as the API returns pet as an object attribute, and not a relationship?
Upvotes: 1
Views: 950
Reputation: 12872
Yes.It will work. ember-twiddle
routes/application.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findRecord('person', 5);
}
});
models/person.js
import Model from "ember-data/model";
import attr from "ember-data/attr";
export default Model.extend({
name: attr('string'),
pet: attr()
});
templates/application.hbs
{{input type="text" class="form-control" value=model.pet.petName}}
adapters/application.js
import Adapter from "ember-data/adapters/json-api";
export default Adapter.extend();
serializers/application.js
import Serializer from "ember-data/serializers/json-api";
export default Serializer.extend();
JSON API call return data:
{
data: {
type: 'person',
id: 5,
attributes: {
"name": "John",
"pet": {
"typeOf": "cat",
"petName": "Furry"
}
}
}
}
Upvotes: 2