Ember рендеринг нескольких моделей

Я хочу сделать несколько моделей в одном и том же маршруте. Данные поступают из DRF api в формате JSON. Мне нужно получить доступ к данным в шаблоне отдельно.

Всего 2 ответа


То, что вы должны иметь в виду, что

  1. Вы используете бэкэнд DRF (так что вы должны использовать Ember DRF Adapter и Serializer), для получения дополнительной информации используйте эту ссылку . Убедитесь, что адаптер и модель имеют одинаковое имя.

  2. Вы должны загрузить более одной модели в маршрут

поэтому здесь вы можете использовать хеш RSVP,

пример:

import Route from '@ember/routing/route'
import hash from 'rsvp'

export default Route.extend({
    model: function() {
        return hash({
            post1: this.store.findAll('model1');
            post2: this.store.findAll('model2');
        });   
    },
    setupController(controller, model) {
        this._super(...arguments);
        Ember.set(controller, 'post1', model.post1);
        Ember.set(controller, 'post2', model.post2);
    }
});

Теперь в template.hbs вы можете получить доступ к этой модели следующим образом:

{{#each post1 as |people|}}
  <p>{{people}}</p>
{{/each}}
{{#each post2 as |user|}}
  <p>{{user}}</p>
{{/each}}

Просто используйте хэши Ember.RSVP . Это довольно просто, просто импортируйте RSVP так:

import RSVP from 'rsvp'

И тогда вы загружаете модель так

model() {
return RSVP.hash({
  user: this.store.findAll('user'),
  model2: this.store.findAll('model2')
 });
}

А затем, когда вы хотите получить доступ к двум другим model.model2 в своем шаблоне, например, выполните: model.model2

Так, например, если первая загруженная модель является пользователем model.user.firstName или подобным образом в вашем {{model.user.firstName}}

Здесь вы найдете документацию об этом: Документация Ember RSVP


Есть идеи?

10000