2014-05-12 2 views
0

EJS에 재귀 포함을 구현하려고합니다. ExpressJS 4를 사용하고 있습니다. 데이터를 선택적으로 전달할 수 있어야합니다. 내 "하위"변수는 루프 반복과 함께 변경되므로 전 세계적으로 작동하지 않습니다. 그러나 최대 호출 스택 크기가 초과되었습니다. 즉 부분의 if 문은 항상 true로 평가됩니다.EJS에 데이터 전달

<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> 

UPDATE : 심지어이 작동하지 않습니다

<ul class="f-dropdown"> 
    <% if (sub.agents && sub.agents.length > 0) { %> 
     <% (function(subs) { %> 
      <% include dropdown.html %> 
     <% })(sub.agents); %> 
    <% } %> 
</ul> 
이 내가 (dropdown.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> 

:

이 내 주요 HTML입니다

나는 곧하려고합니다. JUST

+0

이것을 확인하십시오. http://stackoverflow.com/questions/34622011/node-ejs-passing-data-to-an-include –

답변

1

기술적으로 visionmedia ejs 라이브러리는 매개 변수를 include에 전달하는 것을 지원하지 않습니다. 당신이 범위 변경 처리하기 위해 인생의 폐쇄를 시도 할 수 있도록 그러나, 자바 스크립트 꽤 잘 일반을 처리

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

가 당신을 위해 작동하는지 알려줘을; 더 이상 조사하지 않으면 기꺼이 조사해 드리겠습니다.

+0

그건 훌륭한 답변입니다! 불행히도, 그것은 작동하지 않습니다. 나는 여전히 "최대 호출 스택 크기를 초과했습니다". 대부분의 subs var는 동일하며 항상 테스트를 통과합니다. 하지만 우리가 가까이있는 것이 좋습니다. –

+0

나는 모든 것을 시도했다. 그것은 단지 'sub'var per iteration을 예상대로 변경하지 않습니다. –