express中使用ejs模板如何实现迭代?

使用nodeJS的express框架,应用了ejs模板,遇到一个问题:

数据为树结构,层数不定,1-5层左右,发现在ejs用include进来的模板内使用的变量名不可更改(或者更改方法我没有找到),导致无法把树结构数据使用迭代的方式来拼成html模板;

想法:想要实现写一个模板,然后遇到判断时调用自身实现迭代,模板中的遍历变量由include时传入,不知道这个想法能否实现;

目前解决方案:约定好树结构层数,在模板中写好遍历。

希望有熟悉EJS的同学帮忙看一看有没有更好的办法。

<ul>
    <% leftData.forEach(function(item){ %>
      <li>
        <% if(item.type == 'file'){ %>
            <%= item.name.split('.md')[0] %>
        <% }else{ %>
            <%= item.name.split('.md')[0] %>
            <% if(item.children.length > 0){ %>
                <ul>
                    <% item.children.forEach(function(value){ %>
                      <li>
                        <% if(value.type == 'file'){ %>
                            <%= value.name.split('.md')[0] %>
                        <% }else{ %>
                            <%= value.name.split('.md')[0] %>
                            <% if(value.children.length > 0){ %>
                                <ul>
                                    <% value.children.forEach(function(data){ %>
                                      <li>
                                        <% if(data.type == 'file'){ %>
                                            <%= data.name.split('.md')[0] %>
                                        <% }else{ %>
                                            <%= data.name.split('.md')[0] %>
                                        <% } %>
                                      </li>
                                    <% }) %>
                                </ul>
                            <% } %>
                        <% } %>
                      </li>
                    <% }) %>
                </ul>
            <% } %>
        <% } %>
      </li>
    <% }) %>
</ul>
阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进