在 JADE 中有条件的父子 div
Conditional with parent and child div in JADE
这是我的实际代码:
each val, index in array
if (index%3 == 0)
.parent
.child
或这个:
each val, index in array
if (index%3 == 0)
.parent
.child
else
.child
我想要的是,接受条件为真,添加块父 .row,当条件不为真时,将子添加到父中。最终目标是拥有这段代码:
<div class='row'>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
</div>
<div class='row'>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
</div>
但是我目前的实际代码是:
<div class='row'></div>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
<div class='row'></div>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
我尝试了很多不同的缩进,但没有任何效果,每次我在条件中写入父级时,块自动关闭,我不知道如何保持打开状态,或重新打开它以将内容放入其中.
Jade 旨在简化结束标记。出于这个原因,不幸的是,在这种情况下无法手动控制何时关闭标签。
所以,AFAICS,您有两个选择:1. 将数组更改为适合 Jade 工作流的内容,或者 2. 使用管道文本手动开始和结束标记。
转换数组
像这样的东西会起作用:
//- You might want to put the `paired` array generation in your
//- main server file instead of the Jade template
- var paired = []
- array.forEach(function (element, index) {
- if (index % 3 === 0) {
- paired.push([element])
- } else {
- paired[paired.length - 1].push(element)
- }
- })
each row in paired
.row
each val in row
.child
手动控制标签结尾
each val, index in array
if (index % 3 === 0)
| <div class="row">
.child
if (index % 3 === 2 || index === array.length - 1)
| </div>
诚然,这两种方法都不是很漂亮,但总比没有好吧?
each val, index in array
if (index%3 == 0)
.parent
block child
.child
else
block child
这可能有点晚了,但可能有人像我一样仍在寻找答案。正如蒂莫西所说,改造阵列是唯一的方法。如果你要明确地使用 html 为什么要使用像哈巴狗这样的模板系统..但是,Timothy 推荐的不是使用纯粹的 javascript 方法我发现使用 mixins 更方便,因为如果你只是使用 javascript 然后在将其传递到模板系统之前更改数据结构。
所以这是我的 mixin 函数(注意可能错误的选项卡,正确设置它们至关重要):
mixin nColumnGrid(array, columns)
- var colClass = 'col-md-' + (12 / columns)
each val, index in array
.row
.col-md-12
h5=index
- var i = 0;
while i < val.length
.row
- var j = 0;
while j < columns && i < val.length
div(class=colClass)=val[i]
- j++
- i++
doctype html(lang='en')
html
head
body
.container
+nColumnGrid(categories, 3)
我的类别数组如下所示
categories: {
first: [
'this is the first subforum of the first category'
],
second: [
'this is the first subforum of the second category.',
'this is the second subforum of t he second category',
'this is the first subforum of the second category.',
'this is the second subforum of t he second category'
]
}
提示:
- 我正在插入 headers,如果您不喜欢它们,请将其删除。
- 我正在使用 bootstrap 网格系统。
- 因此,columns 参数应该是 12 的除数。
干杯 m8es
这是我的实际代码:
each val, index in array
if (index%3 == 0)
.parent
.child
或这个:
each val, index in array
if (index%3 == 0)
.parent
.child
else
.child
我想要的是,接受条件为真,添加块父 .row,当条件不为真时,将子添加到父中。最终目标是拥有这段代码:
<div class='row'>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
</div>
<div class='row'>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
</div>
但是我目前的实际代码是:
<div class='row'></div>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
<div class='row'></div>
<div class='child'></div>
<div class='child'></div>
<div class='child'></div>
我尝试了很多不同的缩进,但没有任何效果,每次我在条件中写入父级时,块自动关闭,我不知道如何保持打开状态,或重新打开它以将内容放入其中.
Jade 旨在简化结束标记。出于这个原因,不幸的是,在这种情况下无法手动控制何时关闭标签。
所以,AFAICS,您有两个选择:1. 将数组更改为适合 Jade 工作流的内容,或者 2. 使用管道文本手动开始和结束标记。
转换数组
像这样的东西会起作用:
//- You might want to put the `paired` array generation in your
//- main server file instead of the Jade template
- var paired = []
- array.forEach(function (element, index) {
- if (index % 3 === 0) {
- paired.push([element])
- } else {
- paired[paired.length - 1].push(element)
- }
- })
each row in paired
.row
each val in row
.child
手动控制标签结尾
each val, index in array
if (index % 3 === 0)
| <div class="row">
.child
if (index % 3 === 2 || index === array.length - 1)
| </div>
诚然,这两种方法都不是很漂亮,但总比没有好吧?
each val, index in array
if (index%3 == 0)
.parent
block child
.child
else
block child
这可能有点晚了,但可能有人像我一样仍在寻找答案。正如蒂莫西所说,改造阵列是唯一的方法。如果你要明确地使用 html 为什么要使用像哈巴狗这样的模板系统..但是,Timothy 推荐的不是使用纯粹的 javascript 方法我发现使用 mixins 更方便,因为如果你只是使用 javascript 然后在将其传递到模板系统之前更改数据结构。
所以这是我的 mixin 函数(注意可能错误的选项卡,正确设置它们至关重要):
mixin nColumnGrid(array, columns)
- var colClass = 'col-md-' + (12 / columns)
each val, index in array
.row
.col-md-12
h5=index
- var i = 0;
while i < val.length
.row
- var j = 0;
while j < columns && i < val.length
div(class=colClass)=val[i]
- j++
- i++
doctype html(lang='en')
html
head
body
.container
+nColumnGrid(categories, 3)
我的类别数组如下所示
categories: {
first: [
'this is the first subforum of the first category'
],
second: [
'this is the first subforum of the second category.',
'this is the second subforum of t he second category',
'this is the first subforum of the second category.',
'this is the second subforum of t he second category'
]
}
提示:
- 我正在插入 headers,如果您不喜欢它们,请将其删除。
- 我正在使用 bootstrap 网格系统。
- 因此,columns 参数应该是 12 的除数。
干杯 m8es