【问题标题】:EJS, node js forEach loop on includeEJS,node js forEach 循环包含
【发布时间】:2017-10-19 23:48:23
【问题描述】:

当使用这种语法在“组件”上循环时,EJS 抱怨任务不是对象,但如果替换为 task._id 就可以了。

有什么想法吗?

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

【问题讨论】:

  • 你到底在哪里用task._id替换task

标签: node.js loops foreach include ejs


【解决方案1】:

如果您询问如何将task 传递给您的include,那么它会是这样的:

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

自动包含顶级数据,但需要显式传递局部变量。见https://github.com/mde/ejs#includes

【讨论】:

  • 这正是我所需要的 :) 谢谢@skirtle ...我以为它可以像“任务”一样访问对象,但事实并非如此。
  • @Kris 当您执行include 时,它会呈现为一个完全独立的模板,因此它无法从周围的模板中看到任何内容。默认情况下,它只是通过与原始模板相同的locals 对象。 EJS 甚至不知道您的 task 变量存在,您的 &lt;? ?&gt; 块中的代码只是直接编译到模板函数中,而 EJS 没有任何理解。
  • 有道理。再次感谢:)
  • 也许我参加聚会迟到了,但我发现使用include 模板获得foreach 的唯一方法是使用&lt;% include _task %&gt; 所写的here
猜你喜欢
  • 1970-01-01
  • 2020-10-04
  • 2019-01-02
  • 2018-11-07
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多