2017-10-19 156 views
0

当使用此语法在“组件”上循环时EJS抱怨说任务不是对象,但是如果替换为task._id,那很好。EJS,包含每个循环的节点js包括

有什么想法吗?

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

您在哪里将'task'替换为'task._id'? – skirtle

回答

1

如果你问如何通过taskinclude那么它会是这样的:

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

顶级数据自动包括在内,但局部变量都需要显式地传递。请参阅https://github.com/mde/ejs#includes

+0

这正是我所需要的:)谢谢@skirtle ...我认为它可以像访问'任务'那样访问对象,但事实并非如此。 – Kris

+1

@Kris当你做一个'include'时,它会被渲染为一个完全独立的模板,所以它不能从周围的模板中看到任何东西。默认情况下,它只是传递与原始模板相同的'locals'对象。 EJS甚至不知道你的'task'变量存在,''块中的代码只是直接编译到模板函数中,而没有EJS的任何理解。 – skirtle

+0

有道理。再次感谢:) – Kris