如何在Jade中每三次迭代插入新的tr

我是node.js和Jade的新手。

我search的解决scheme没有成功(也许我在谷歌提出错误的问题,我不知道)。

我想在Jade的each循环中创build表行。 事情是,每第三个td我想插入新的tr 。 通常这很简单,但是用Jade我根本做不到。

我的Jade文件:

 table thead tr td Header tbody each item, i in items if (i % 3 === 0) tr td a(href="#{baseUrl}/admin.html?id=#{item.id}") 

我知道我的if语句有什么问题。 我尝试了许多configuration没有运气。 我相信这将是相当容易的问题。

预先感谢您的帮助!

编辑

基于@Laurent佩林答案我修改了一点我的代码。 现在它创buildtr ,然后是3 td ,然后是新tr所以它更接近一点…

新的玉

 if (i % 3 === 0) tr td: a(href="#{baseUrl}/admin.html?id=#{item.id}") dsdsd #{i} 

生成的HTML

 <tr></tr> <td><a href="...">0</a></td> <td><a href="...">1</a></td> <td><a href="...">2</a></td> <tr></tr> 

编辑 :这个代码应该做你想要的,但它不是很优雅:

 table thead tr: td Header tbody - for(var i = 0, nbRows = items.length/3; i < nbRows; i++) { tr if items[3*i] td: a(href="#{baseUrl}/admin.html?id=#{items[3*i].id}") if items[3*i + 1] td: a(href="#{baseUrl}/admin.html?id=#{items[3*i + 1].id}") if items[3*i + 2] td: a(href="#{baseUrl}/admin.html?id=#{items[3*i + 2].id}") - } 

你可以做什么,而不是调整你的模型,使其更容易玉,通过按行分组的项目:

函数getRows(items){
     return items.reduce(function(prev,item,i){
        如果(i%3 === 0)
             prev.push([项目]);
        其他
             prev [prev.length  -  1] .push(item);

        返回上一级;
     },[]);
 }

这将变成:

 [{ID:1},{ID:2},{ID:3},{ID:4},{ID:5}]

成:

 [
     [{ID:1},{ID:2},{ID:3}],
     [{ID:4},{ID:5}]
 ]

那么你的玉代码变得更简单了:

表
      THEAD
          tr:td标题
      TBODY
        行中的每一行
             TR
                行中的每个项目
                     td:a(href =“#{baseUrl} /admin.html?id =#{item.id}”)

以jade + bootstrap为例,每4个元素(列)一行,行就在行内。

“`

 - var i = 0 - var itens_per_line = 4 each order in viewBag.orders - if (i % itens_per_line === 0 || i === 0) { .row - } .col-md-3.column p #{order.number} - i++ 

“`

这是我为单个数组(例如['1','2','3','4'])将其转换为每行两个值,它可以调整为3。

(mixin是Jade / Pug中的模板)

  mixin mInput div.form-group.col-md-6 p=oval - var valcounter = 0 - var row = []; each val in JSON.parse(formvalues) if(valcounter % 2 === 0) - var col = []; - col.push(val) else - col.push(val) - row.push(col) - valcounter++ each orow in row div.row each oval in orow +mInput