0

如果我使用我在页面上定义的变量,我可以轻松地在 Jade 中创建一个表,但是一旦我尝试使用其他任何东西,它就会打印出一张没有任何内容的长表。

例如,我可以使用以下代码生成一个表格:

table
  thead
    tr
      th Bid ID
      th Bid Value
  tbody
    items = [ {"bid_id":1, "bid_value":1.63},{"bid_id":2, "bid_value":1.75},{"bid_id":3, "bid_value":1.00} ]
    each item, i in items
      tr
        td #{item.bid_id}
        td #{item.bid_value}

但是,当我尝试使用以下内容时,我得到一个非常长的桌子,完全是空的!

table
  thead
    tr
      th Bid ID
      th Bid Value
  tbody
    items = all_bids
    each item, i in items
      tr
        td #{item.bid_id}
        td #{item.bid_value}

all_bids 包含与上面明确定义的完全相同的 JSON。如果我使用以下命令在 Jade 视图中打印它:

p= all_bids

它将数组正确打印为:

[ {"bid_id":1, "bid_value":1.63},{"bid_id":2, "bid_value":1.75},{"bid_id":3, "bid_value":1.00} ]

努力寻找有关在 Jade 中创建表格的任何体面文档,因此我们将不胜感激!

谢谢!

4

1 回答 1

2

所以......是all_bids一个数组或者它可能是一个json字符串?在您的情况下,这似乎all_bids是一个字符串。在这种情况下each,循环遍历字符,并且由于字符既没有bid_id也没有bid_value属性,您将获得一个大而空的表。

现在我是怎么想出这些东西的?让我们试着当侦探片刻,好吗?:) 看看这一行:p= all_bids。它产生这个输出:

[ {"bid_id":1, "bid_value":1.63},{"bid_id":2, "bid_value":1.75},{"bid_id":3, "bid_value":1.00} ]

通常,如果它是一个数组,您会得到:

"[object Object],[object Object],[object Object]"

因为.toString()电话(发生在幕后)。因此all_bids 不是数组,而是字符串!

当您传递all_bids给 Jade 时,尝试将其转换为对象,即JSON.parse(all_bids);.

于 2012-07-10T12:51:48.117 回答