0
我很努力地理解如何從兩個相關模型中獲取數據來顯示。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'});
}
});
我的數據:
在此先感謝
不,不幸的是,這不是工作要麼。另外,如果我輸出'recipe.tags.length',我會得到0,儘管存在與配方相關的標籤。 –
是的,該數據信息是有幫助的。它看起來像你的後端沒有發送標籤信息作爲標準的JSON:API對象,這將解釋Ember Data的混亂。具體來說,你的標籤是*嵌入*而不是*包含*。爲了匹配JSON:API規範,您需要在每個食譜中有一個「關係」關鍵字,其中包含關於哪些標記與所涉及的配方鏈接的信息。如果你看一下這個主頁上的例子:http://jsonapi.org/你需要匹配'relationships.data'方法。這有幫助嗎? – acorncom