簡體   English   中英

將數據傳遞到EJS包括

[英]Pass data to EJS include

我正在嘗試在EJS中實現遞歸包含。 我正在使用ExpressJS4。我需要能夠選擇性地將數據傳遞給包含。 我的“ sub”變量隨循環迭代而變化,因此無法全局工作。 但是我得到“超出最大調用堆棧大小”,這意味着在部分中的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

從技術上講,visionmedia ejs庫不支持將參數傳遞到include中。 但是,它可以很好地處理普通的javascript,因此您可以嘗試使用IIFE閉包來處理范圍更改:

<a href="#"><%= sub.fname +' ' +sub.lname %></a>
<% if (sub.agents && sub.agents.length) { %>
    <% (function() { %>
        <% var subs = sub.agents; %>
        <% include dropdown.html %>
    <% })(); %>
<% } %>

讓我知道這是否對您有用; 如果沒有,我很樂意進一步調查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM