Как отобразить ответ API в шаблоне Ember? - PullRequest
0 голосов
/ 13 апреля 2019

Я использую Ember для извлечения определенной записи из REST API и отображения ее в шаблоне.Я могу консольно записать полезную нагрузку из моего сериализатора, и он правильно отобразит объект, но мой шаблон не может получить к нему доступ.

Полезная нагрузка имеет следующую структуру:

{ 
  _id: 5cb0f8bd3b74cf22b75e1a37,
  name: 'Mu',
  hour: 0,
  day: 0,
  week: 0,
  month: 0,
  year: 753,
  size: 1,
  detail: 1,
  createdAt: 2019-04-12T20:44:45.691Z,
  updatedAt: 2019-04-12T20:44:45.691Z,
  __v: 0 
}

Myember route выглядит следующим образом:

import Route from '@ember/routing/route';

export default Route.extend({
  model() {
    this.get('store').find('world', '5cb0f8bd3b74cf22b75e1a37');
  },
})

Мой адаптер выглядит следующим образом:

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'http://localhost:3000',
  pastForType() {
    return 'worlds';
  },
});

Вот моя модель ember для миров:

import Model from 'ember-data/model';
import DS from 'ember-data';

const { attr } = DS;

export default Model.extend({
  name: attr('String'),
  hour: attr('Number'),
  day: attr('Number'),
  week: attr('Number'),
  month: attr('Number'),
  year: attr('Number'),
  size: attr('Number'),
  detail: attr('Number')
});

Полезная нагрузканормализуется моим сериализатором:

import DS from 'ember-data';

export default DS.RESTSerializer.extend({
  primaryKey: '_id',

  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    payload = { worlds: payload };
    console.log(payload);
    return this._super(store, primaryModelClass, payload, id, requestType);
  }
});

Когда вызывается маршрут, консоль выводит:

Object { worlds: {…} }

Данные верны внутри объекта, но когда я пытаюсь получить доступ к {{model.name}}в моем руле шаблон ничего не отображается.

Мне не удается как-то передать объект в шаблон?Я просто ссылаюсь на это неправильно?

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Как уже упоминалось в комментарии, вы пропустили возвращение в ваших маршрутах model hook.Для этого модель маршрута равна undefined, даже если ваш запрос store.find() корректно разрешается с ожидаемой записью.

1 голос
/ 13 апреля 2019

Замените вашу модель крючком на,

model() {
  return this.store.find('world', '5cb0f8bd3b74cf22b75e1a37');
}
...