如何使用Pugjs或Jade创建表

时间:2018-10-03 15:47:28

标签: node.js html-table pug

我想使用Pug将此json文件渲染到表中,但并没有如我所愿。我想要两种语言的数据和app_adi,但只有最新数据。如何同时显示两者?

JSON文件

{
   "accounts":{
         "user":{
            "_id":"5a500vlflg0aslf011ld0a25a5",
            "username":"john",
            "id":"59d25992988fsaj19fe31d7",
            "name":"Test",
            "customer":" John Carew",
         },
         "application":[
            {
               "app_id":"5af56pi314-y1i96kdnqs871nih35",
               "language":"es"
            },
            {
               "app_id":"5af56pi314-blvinpgn4c95ywyt8j",
               "language":"en"
            }
         ]
      }
   }

代码

 body
  main
    .container              
     table.table
        tr
          th username
          th customer
          th language
          th app_id
      tbody
        each users in accounts
          tr
            td #{users.user.name}
            td #{users.user.email}
            each app in application
                td #{app.language}
                td #{app.app_id}

我要建立此表:

username customer    language  app_di
john     John Carew   es        5af56pi314-y1i96kdnqs871nih35
                      en        5af56pi314-blvinpgn4c95ywyt8j

但是当我运行上面的代码时,我只得到了最后一个,只有语言“ en”?

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您的问题与开始each循环的位置有关,但是JSON也存在一些结构性问题。

我假设您正在像这样将对象传递到您的路线中:

var data = { "accounts": ... }
res.render('templatename', data);

这表示帐户对象在呈现时将位于您的哈巴狗模板的根。

当您在帐户(对象,而不是数组)上创建循环时,pug将遍历该对象中的每个属性,因此您的第一个(each users in accounts)将在{{1 }}变量:

  1. 用户
  2. 应用程序

我认为这不是您想要的。如果将users段转换为数组,则可以像这样成功地遍历一组用户:

accounts.user

对于第二个,您将需要按以下方式引用该应用程序:

each user in accounts.users

或者,您可能会像这样将数据传递到render函数中:

each application in accounts.application

如果您这样做,那么您将像这样遍历用户:

var data = { "accounts": ... }
res.render('templatename', data.accounts);

应用程序循环将是这样:

each user in users

请快速浏览pug iteration docs,以获取更多参考。