Ember:从模板访问多个到多个数据

时间:2017-10-15 16:15:10

标签: javascript ember.js ember-data ember-cli

我很难理解如何从两个相关模型中获取数据。

我的食谱可以有很多标签和标签,可以有很多食谱:

//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'});
  }
});

我的数据:

enter image description here

提前致谢

1 个答案:

答案 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}}来追踪出现问题的方法