2017-10-19 27 views
0

Lorsque vous utilisez cette syntaxe pour créer une boucle sur un 'composant' EJS se plaint que cette tâche n'est pas un objet mais si elle est remplacée par task._id c'est bon.EJS, noeud js pourChaque boucle sur include

Des idées s'il vous plaît?

<? tasks.forEach(function(task){ ?> 
     <?- include('_task'); ?> 
    <? }) ?> 
+1

Où exactement remplacez-vous 'task' par' task._id'? – skirtle

Répondre

1

Si vous vous demandez comment passer task à votre include alors ce serait quelque chose comme ceci:

<? tasks.forEach(function(task) { ?> 
    <?- include('_task', {task: task}) ?> 
<? }) ?> 

données de niveau supérieur est automatiquement inclus, mais les variables locales doivent être transmis explicitement . Voir https://github.com/mde/ejs#includes

+0

C'est exactement ce dont j'avais besoin :) Merci @skirtle ... J'ai supposé qu'il aurait accès aux objets comme des 'tâches' mais ce n'est pas le cas. – Kris

+1

@Kris Lorsque vous faites un include, il est rendu comme un template totalement séparé, donc il ne peut rien voir du template environnant. Par défaut, il reçoit simplement le même objet 'locals' que le modèle d'origine. EJS ne sait même pas que votre variable 'task' existe, le code à l'intérieur de vos blocs' 'est juste compilé directement dans la fonction template sans aucune compréhension d'EJS. – skirtle

+0

Cela a du sens. Merci encore une fois :) – Kris