我将一个对象数组传递给EJS模板,我希望使用数组的常规.map()方法将其映射为链接。但是出于某些原因,我无法在EJS中按照预期工作的回调函数传递给map(),并且我得到了空结果。
我的数据是一个对象数组,每个对象都有一个“section”和一个“name”键。这个数组被作为“entries”传递给模板:
siteHeaders = [ { section: "home", name: "Home"},
{ section: "about", name: "About Me"},
... plus few more ]
模板长这样,我已经存到了本地变量中(惊喜),叫做
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>
我不明白的是为什么这个在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>' ]
>
有线索吗?