オブジェクトの配列を EJS テンプレートに渡しています。これは、配列の通常の .map() メソッドを使用してリンクにマップしたいと考えています。しかし、私が理解できない理由により、map() に渡すコールバックは、EJS 内で期待どおりに機能せず、空の結果が得られます。
私のデータはオブジェクトの配列で、それぞれに「セクション」と「名前」キーがあります。この配列は「エントリ」としてテンプレートに渡されます。
siteHeaders = [ { section: "home", name: "Home"},
{ section: "about", name: "About Me"},
... plus few more ]
テンプレートは次のようになり、 (surprise) というローカル変数に含まれています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>' ]
>
手がかりはありますか?