通过 Node.js 中的 Jade 模板引擎,我尝试使用嵌套 JavaScript 用元素填充表。 这就是我想要实现的目标:
<tr class="darkTableRow">
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
<tr class="darkTableRow">
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
<tr class="darkTableRow">
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
我使用的Jade代码是这样的:
- for (var g = 0; g < GPU_count; g++)
tr.darkTableRow
- for (var v = 0; v < 2; v++)
td.vcTextValue= 'value: ' + v
这是模板输出的 HTML:
<tr class="darkTableRow"></tr>
<tr>
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
<tr class="darkTableRow"></tr>
<tr>
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
<tr class="darkTableRow"></tr>
<tr>
<td class="vcTextValue">value: 0</td>
<td class="vcTextValue">value: 1</td>
</tr>
如您所见,正在渲染一个空对象,并且它的类设置为 darkTableRow
。这不是我想要的。
所以我写的 Jade 代码不正确吗?我不明白如何格式化内联 JavaScript 代码。我不知道破折号的用途是什么,也不知道花括号在模板中是否有所不同。
最佳答案
- for (var g = 0; g < GPU_count; g++) {
tr.darkTableRow
- for (var v = 0; v < 2; v++)
td.vcTextValue= 'value: ' + v
- }
破折号是一种丑陋的实现方式...Jade 有一些内部迭代器,您可以在没有破折号的情况下使用它们...破折号的意思是“这一行的其余部分是纯 Javascript”
看起来你的问题是缺乏“缩进”tr...所以它使tr...然后关闭它,然后创建一个新的假tr来保存你试图吐出的td出来。
关于Node.js Jade : Nested 'for' loop not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669495/