2017-10-15 8 views
0

2つの関連モデルのデータを表示する方法を理解するのは苦労しています。 (コンポーネントを経由して)私は私のレシピルートからこのような何かをしようとしていますEmber:テンプレートから多対多のデー​​タにアクセスする

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

おかげ

答えて

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> 

また、今後のデバッグの目的のために、あなたも間違っ

+0

いいえ、残念ながらそれはどちらか動作していないです何が起こっているかを追跡する{{debugger}}または{{log recipes}}を使用することができます。また、 'recipe.tags.length'を出力すると、レシピに関連付けられたタグがあるにもかかわらず、0になります。 –

+0

はい、そのデータ情報が役立ちます。あなたのバックエンドが標準のJSON:APIオブジェクトとしてタグ情報を送信していないように見えますが、これはEmber Dataの混乱を説明します。具体的には、あなたのタグは* included *の代わりに* embedded *です。 JSON:API仕様にマッチさせるには、それぞれのレシピの中に「関係」キーがあり、そのレシピにリンクされているタグに関する情報が必要です。ホームページの例を見てみると:http://jsonapi.org/あなたは 'relationships.data'アプローチに合致する必要があります。それは役に立ちますか? – acorncom

関連する問題