如何在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