edhel
edhel

Reputation: 203

Ember: attributes of type object

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

Answers (1)

Ember Freak
Ember Freak

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

Related Questions