javascript - jade 中的迭代循环无法正确呈现数据

标签 javascript node.js express pug

我在 jade 中有一个表,它将通过 express ( res.render('index', {classes: results}) ) 动态生成:

table
  tr
    th Title
    th School
    th Description
- if (classes.length) {
- classes.forEach(function(aClass) {
  tr
    td= aClass.title
    td= aClass.school
    td= aClass.desc
- });}

但是,当我渲染它时,数据显示为一团乱码。查看 HTML 源代码会发现 </table>标记之前 classes 中的内容.我该如何解决这个问题?

最佳答案

你几乎明白了 - jade 在这里很挑剔。创建迭代循环时,您需要确保 JavaScript 与数据缩进到同一级别:

table
  tr
    th Title
    th School
    th Description
  - if (classes.length) {
  - classes.forEach(function(aClass) {
  tr
    td= aClass.title
    td= aClass.school
    td= aClass.desc
  - });}

如果这让您内心的编码员对代码风格感到畏缩,我同意您的看法。然而,事情就是这样。或者,您可以使用 jade 的 each ( documented here )

table
  tr
    th Title
    th School
    th Description
  - if (classes.length) {
  each aClass in classes
    tr
      td= aClass.title
      td= aClass.school
      td= aClass.desc
  - }

同样,这看起来有点不稳定,但却是迭代的最佳方式。

关于javascript - jade 中的迭代循环无法正确呈现数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245239/

相关文章:

javascript - 是否可以使用JavaScript检测未知的CSS属性或无效的CSS属性值

node.js - 如何访问 WordPress 身份验证 token

node.js - Node 未找到全局模块

javascript - 为什么浏览器支持对象的隐式函数属性

node.js - 无法在 NodeJS/expressJS 上设置签名的 SSL 证书

Javascript - 如何使用多个 .then() 的 promise

javascript - 使用 jQuery 创建 Canvas 元素并设置其宽度和高度属性

javascript - 使用 javascript asp.net 将文本框中输入的日期更改为另一种格式

javascript - 如何在这里正确使用 isNaN?

javascript - 在 Express 中使用自定义错误中间件时未定义 next