灰烬渲染多个模型

时间:2018-11-12 16:01:55

标签: ember.js

我想将多个模型渲染到同一条路径中。 数据来自JSON格式的DRF API。 我需要分别访问模板中的数据。

2 个答案:

答案 0 :(得分:2)

只需使用Ember.RSVP哈希即可。 非常简单,只需导入RSVP即可:

import RSVP from 'rsvp';

然后像这样加载模型

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

然后,例如,当您想访问模板中的其他两个模型时,请执行:model.model2

例如,如果第一个加载的模型是用户,请在您的模板中执行model.user.firstObject.firstName或类似操作。hbs {{model.user.firstObject.firstName}}

您将在此处找到有关它的一些文档:Ember RSVP documentation

答案 1 :(得分:1)

您要记住的事情

  1. 您正在使用DRF后端(因此必须使用Ember DRF适配器和串行器),有关更多信息,请使用此link。 确保适配器和型号具有相同的名称。

  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}}