ejs是否处理array.map(回调)? [英] Does EJS handle array.map(callback)?

查看:22
本文介绍了ejs是否处理array.map(回调)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将一个对象数组传递给一个ejs模板,我希望使用数组的常规.map()方法将其映射为链接。但是由于我不知道的原因,我传递给map()的回调在ejs中没有按照我预期的方式工作,并且我得到的结果是空的。

我的数据是一个对象数组,每个对象都有一个"节"和一个"名称"键。此数组作为"条目"传递给模板:

siteHeaders = [ { section: "home", name: "Home"}, 
                { section: "about", name: "About Me"}, 
                ... plus few more ]

该模板如下所示,我将其放在一个名为(Shocket)template的局部变量中:

<% entries = entries.map(function(elem) { -%>
  <% return -%>
  <a href="/<%= elem.section %>">
    <%= elem.name %>
  </a>
<% } ) -%>
<p><%- entries.join(" | ") %></p>

当我调用require('ejs').render(template, {entries: siteHeaders})时,该模板的结果是:

          <p> |  |  |  | </p>

我不明白的是,当相应的map调用在repl中运行良好时,为什么这在ejs模板中不起作用:

> siteHeaders.map(function(e){ return '<a href="/' + e.section +'">' + e.name + '</a>' })
[ '<a href="/home">Home</a>',
  '<a href="/guide">About Me</a>',
  '<a href="/quickstart">Portfolio</a>',
  '<a href="/reference">Blog</a>',
  '<a href="/downloads">Contact</a>' ]
>

有什么线索吗?

推荐答案

此代码应该可以工作:

<% entries = entries.map(function(elem) {
    return '<a href="/' + elem.section + '">' + elem.name + '</a>';
}) -%>
<p><%- entries.join(" | ") %></p>

您不能在函数内使用简单的html。只有在循环和条件下才有可能。

这篇关于ejs是否处理array.map(回调)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆