J'ai du mal à comprendre comment afficher les données de deux modèles liés.Ember: Accéder à de nombreuses données à partir du modèle
J'ai une recette qui peut avoir de nombreuses balises et une étiquette qui peut avoir de nombreuses recettes:
//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')
});
Je suis en train de faire quelque chose comme ça de ma route recettes (via un composant):
//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}}
Si je produis {{ recipe.tags }}
, j'obtiens un <DS.PromiseManyArray>
.
Comment puis-je résoudre cette promesse?
J'ai essayé d'ajouter {include: tags}
à mes recettes itinéraire - mais il ne semble pas faire une différence:
//routes/recipes.js
export default Route.extend({
model() {
return this.get('store').findAll('recipe', {include: 'tags'});
}
});
Mes données:
Merci à l'avance
Non, malheureusement qui ne fonctionne pas non plus. De plus, si je renvoie 'recipe.tags.length', j'obtiens 0, bien qu'il y ait des balises associées à la recette. –
Oui, cette information de données est utile. Il semble que votre backend n'envoie pas les informations sur les tags en tant qu'objet JSON: API standard, ce qui expliquerait la confusion de Ember Data. Plus précisément, vos tags sont * incorporés * au lieu de * inclus *. Pour correspondre à la spécification JSON: API, vous devez avoir une clé 'relations' dans chacune de vos recettes contenant des informations sur les tags liés à la recette en question. Si vous jetez un oeil à l'exemple sur la page d'accueil ici: http://jsonapi.org/ vous devez correspondre à l'approche 'relationships.data'. Est ce que ça aide? – acorncom