我想将多个模型渲染到同一条路径中。 数据来自JSON格式的DRF API。 我需要分别访问模板中的数据。
答案 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)
您要记住的事情
您正在使用DRF后端(因此必须使用Ember DRF适配器和串行器),有关更多信息,请使用此link。 确保适配器和型号具有相同的名称。
您必须在路线中加载多个模型
所以在这里您可以使用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}}