【问题标题】:How to pass array of objects to jade display in view?如何将对象数组传递给玉显示?
【发布时间】:2016-07-24 21:08:58
【问题描述】:

我正在使用 twitter 节点模块使用 api 检索搜索并将它们放入存储在名为“tweets”的变量中的对象数组中,如下所示:

[ { created_at: 'Sun Jul 24 20:32:34 +0000 2016',
   text: '2 Timothy 1:7 #nofear #power #love #sound-mind',
   user: 
     { id: 90281227, 
       name: 'Anavella', 
       screen_name: 'anavellar' } }, 
 { created_at: 'Sun Jul 24 20:32:34 +0000 2016', 
   text: '????????????????Look, then, that the light in you is not darkness.Lucas 11:35???????????????? #Love,
   user: 
     { id: 197893427,
       name: 'Sandra Melanny Rojas',
       screen_name: 'MelannySan' } } ]

当我在控制台上打印出来时。我正在使用以下代码行渲染视图:

res.render('index', { title: 'Express', data: JSON.stringify(tweets) });

在玉模板上我有这样的东西:

block content
  h1= title
  p Welcome to #{title}
  -var jsonObj = !{JSON.parse(data)}
  if jsonObj
    ul
      each tweet, i in jsonObj
        li= tweet

但我收到了意外的令牌错误。

基本上,我要做的是将我在 index.js 中创建的对象数组传递给 index.jade 视图,并能够遍历对象数组,以便我可以在视图中显示结果.

更新

我从 JSON.parse(data) 中删除了 !{}

-var jsonObj = JSON.parse(data)

最终消除了意外的令牌错误。在这种情况下,我仍然收到一条错误消息,指出“JSON 输入意外结束”,指的是我刚刚编辑的行。

【问题讨论】:

  • 1) 你确定数组需要被解析为 JSON 吗? 2)你试过解析控制器中的数据吗?
  • 我在将它传递到玉视图之前对其进行了字符串化,这就是我解析它的原因。我已经尝试在控制器中解析它,它会注销我放在上面的示例数组。 @pdoherty926
  • 您应该能够将数组传递到视图,而无需对其进行字符串化/解析。

标签: json node.js express twitter pug


【解决方案1】:

在将上下文数据传递给视图时不需要使用 stringify:

res.render('index', { title: 'Express', data: tweets });

现在,在您的玉中,您可以像往常一样使用点符号或方括号符号简单地遍历数组并打印对象的属性:

block content
  h1= title
  p Welcome to #{title}
  ul
    each tweet in data
        li= tweet.text

【讨论】:

    猜你喜欢
    • 2017-08-04
    • 2016-11-15
    • 2012-10-09
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2016-06-06
    • 2021-11-26
    相关资源
    最近更新 更多