【发布时间】:2014-06-30 04:20:55
【问题描述】:
我正在尝试在 EJS 中实现递归包含。我正在使用 ExpressJS 4。我需要能够有选择地将数据传递给包含。我的“子”变量随循环迭代而变化,因此无法全局工作。 但是,我得到“超出最大调用堆栈大小”,这意味着部分中的 if 语句始终评估为 true。
这是我的主要 HTML:
<ul id="drop1" data-dropdown-content class="f-dropdown">
<% agents.forEach (function(sub) { var subs = sub.agents; %>
<li>
<a href="#"><%= sub.fname +' ' +sub.lname %></a>
<% if (subs) { %>
<% include dropdown.html %>
<% } %>
</li>
<% }); %>
</ul>
这是我的包含(dropdown.html):
<ul class="f-dropdown">
<% subs.forEach(function(sub) { %>
<li>
<a href="#"><%= sub.fname +' ' +sub.lname %></a>
<% if (sub.agents && sub.agents.length) {subs = sub.agents; %>
<% include dropdown.html %>
<% } %>
</li>
<% }); %>
</ul>
更新: 即使这样也行不通:
<ul class="f-dropdown">
<% if (sub.agents && sub.agents.length > 0) { %>
<% (function(subs) { %>
<% include dropdown.html %>
<% })(sub.agents); %>
<% } %>
</ul>
我要试试JUST
【问题讨论】: