Coffeescript 在增量和元数据使用情况下使用eco执行for循环

Coffeescript 在增量和元数据使用情况下使用eco执行for循环,coffeescript,docpad,eco,Coffeescript,Docpad,Eco,我正在使用docpad,在索引页上,在导航窗格中,我想获得按类别分组的链接列表 类别在顶部元信息中的每个降价文档中定义。例如类别:“教程” 所以我有这个: <% for docu in @getFilesAtPath("document-repository").toJSON(): %> <li><h2><%=cat=docu.category%></h2></li> <%for docu in @getFile

我正在使用docpad,在索引页上,在导航窗格中,我想获得按类别分组的链接列表

类别在顶部元信息中的每个降价文档中定义。例如
类别:“教程”

所以我有这个:

<% for docu in @getFilesAtPath("document-repository").toJSON(): %>
<li><h2><%=cat=docu.category%></h2></li>
   <%for docu in @getFilesAtPath("document-repository",category:cat}).toJSON():%>
       <li><a href="#<%=docu.url%>"><%=docu.title%></a></li>
   <%end%>
<% end %>

  • 但当然,这是不好的,因为它循环了我拥有的文件的很多倍。我只有一个类别,我希望它只循环一次,当链接列表打印出来

    对于jekyll,它是这样做的(部分_包括来自的nav.html):

    {%用于site.categories%}
    
  • {{类别|第一}}
      {%类别中的帖子为%} {posts%%中的post为%s}
    • {%endfor%} {%endfor%}
  • {%endfor%}

    他不知怎么知道有多少种类。我不知道如何将它移植到docpad

    我认为最好的问题是,在询问之后,你什么时候能找到答案:) 所以我找到了一个“解决办法”,至少我认为这是一个解决办法,而不是一个解决办法。对我来说,这是完美的:

  • 我已将“类别”添加到docpad.coffee文件中

        templateData:
                site:
                categories: ['Tutorials','General']
    
    现在,我将始终使用应该在每个降价文档的元信息中使用的类别更新此数组

  • 我的循环现在看起来像这样…而且有效

     <% for category in @site.categories : %>
        <li><h2><%- category  %></h2>
        <ul>
        <%for docu in @getFilesAtPath("document-repository",[{filename: -1}]).findAll({category:category}).toJSON():%>
                <li><a href="#<%=docu.url%>"><%=docu.title%></a></li>
        <% end %>
        </ul>
        </li>
    <% end %>
    
    
    
  •  <% for category in @site.categories : %>
        <li><h2><%- category  %></h2>
        <ul>
        <%for docu in @getFilesAtPath("document-repository",[{filename: -1}]).findAll({category:category}).toJSON():%>
                <li><a href="#<%=docu.url%>"><%=docu.title%></a></li>
        <% end %>
        </ul>
        </li>
    <% end %>