Я использую службу для запроса данных, затем услуга вводится в компонент. Данные извлекаются из Ember Mirage.Отображение данных из API (Хранилище) в шаблоне - невозможно отобразить извлеченную запись
Моя проблема заключается в том, что я не могу отображать данные в качестве свойства, хотя, когда это свойство используется в computedProperty, computedProperty правильно вычисляет и отображает.
шаблон компонента в гербе:
.notifications-number {{notificationService.countUnread.content}}
each notificationService.notifications.content as |notification|
span {{notification.text}}
служба уведомления:
import Ember from 'ember';
export default Ember.Service.extend({
store: Ember.inject.service('store'),
// render bugs out
notifications: function() {
return this.get('store').findAll('notification')
}.property(),
// renders correctly
countUnread: function() {
return DS.PromiseObject.create({
promise: this.get('notifications').then((notifications) => {
return notifications.get('length')
})
});
}.property(),
});
Mirage конфигурация:
this.get('/notifications',() => {
return {
data: [
{id: 1, type: 'notification', text: 'hi im notification', link: ''},
{id: 2, type: 'notification', text: 'hi im notification 2', link: 'google.com'}
]
};
});
У меня аналогичная проблема с другой службой и компонентами, где полученные данные не массив, но объект.
{{myService.myProperty}}
оказывает<(subclass of Ember.ObjectProxy):ember404>
{{myService.myProperty.content}}
оказывает<[email protected]:myModel::ember580:1>
{{myService.myProperty.content.myModelField}}
не делает ничего.
Все работало нормально, когда я вручную установил значения в хранилище в приложении init, но не работает, когда фактические асинхронные запросы отправляются в макет API.
Вы уверены, что 'countUnread' работает правильно? Вы используете 'PromiseObject', но вы фактически возвращаете значение (' length', которое является числом). Значения не могут быть проксимированы, вам нужно вернуть что-то вроде '{value: notifications.get ('length')}'. И сделайте '{{countUnread.value}}' в шаблоне. – locks
Вы уверены, что это правильный формат для полезной нагрузки Mirage? – locks
Кажется, что это действительно сработало правильно, хотя я не знаю почему. Может быть, это совпадение вычислено правильным числом? В любом случае, вы правы, основной проблемой был неправильный формат JSON. Я добавлю свой ответ позже сегодня. – Senthe