我很难理解如何从两个相关模型中获取数据。
我的食谱可以有很多标签和标签,可以有很多食谱:
//models/recipe.js
export default DS.Model.extend({
name: DS.attr('string'),
tags: DS.hasMany('tag')
});
//models/tag.js
export default DS.Model.extend({
name: DS.attr('string'),
tags: DS.hasMany('recipe')
});
我正在尝试从我的食谱路线(通过一个组件)做这样的事情:
//templates/components/list-recipes.hbs
<ul>
{{#each recipes as |recipe|}}
<li>{{recipe.name}} - {{#each recipe.tags as |tag|}} {{tag}} {{/each}}</li>
{{/each}}
</ul>
//templates/recipes.hbs
{{list-recipes recipes=model}}
如果我输出{{ recipe.tags }}
,我会收到<DS.PromiseManyArray>
。
我该如何解决这个承诺?
我尝试将{include: tags}
添加到我的食谱路线中 - 但它似乎没有什么区别:
//routes/recipes.js
export default Route.extend({
model() {
return this.get('store').findAll('recipe', {include: 'tags'});
}
});
我的数据:
提前致谢
答案 0 :(得分:0)
在输出您的代码时(例如{{tag.name}}
)
这对你有用吗?你所拥有的其他一切看起来都是正确的......
//templates/components/list-recipes.hbs
<ul>
{{#each recipes as |recipe|}}
{{! line below updated slightly }}
<li>{{recipe.name}} - {{#each recipe.tags as |tag|}} {{tag.name}} {{/each}}</li>
{{/each}}
</ul>
此外,为了将来的调试目的,您还可以使用{{debugger}}
或{{log recipes}}
来追踪出现问题的方法