迭代对象数组并返回到jade模板

时间:2016-04-01 19:58:48

标签: express pug

我有一个我需要的数组,我需要传递表达,渲染,然后在Jade端迭代以显示所有结果,但是下面的函数不起作用。它只显示一个数据,五次来自数组。预期的行为是它将循环遍历数组并显示模板中每个对象之一。

玉的语法是否正确?文档非常清晰。

截图 enter image description here

快速

router.get('/', function(req, res, next){
  weekendPlans(function(err, theWeekend) {
      if (err) throw err
      console.log(theWeekend);
      res.render('index', {theWeekend : theWeekend});
});

  h2 On This Weekend
  .scroll
    each result, i in theWeekend
      div.title
        #[a(target="_blank" href="#{theWeekend.url}") #{theWeekend.title}]
        p WHEN: #{theWeekend.selectedDate}

数据

{ _id: 56fe9fe71f84acc2564b9fe8,
  url: 'http://www.timeoutshanghai.com/features/Blog-Food__Drink/35271/Baristas-showcase-latte-art-in-Shanghai.html',
  title: 'TIMEOUT',
  selectedDate: Sat Apr 02 2016 01:00:00 GMT+0100 (BST),
  __v: 0 }

2 个答案:

答案 0 :(得分:1)

在您的Jade文件中,您正在迭代数据对象,该对象为对象中的每个键值对循环一次。如果您只想要一个数据对象条目,请尝试以下方法:

div.title
  #[a(target="_blank" href="#{theWeekend.url}") #{theWeekend.title}]
  p WHEN: #{theWeekend.selectedDate}

它应该有用。

答案 1 :(得分:1)

什么阵列?我只能看到一个对象。你正在循环一个对象。对于对象中的每个键,您都可以使用锚点和段落打印出一个div。由于您的对象包含五个键,因此您将获得五个div。

这就是为什么当你写result.key时它没有给你什么,因为那不存在。在那种情况下result[1]会给你网址。当你写theWeekend.key时,它每次都会给你相同的文字。

如果您只有一个物体,则不需要循环。你应该写:

.scroll
      div.title
        #[a(target="_blank" href="#{theWeekend.url}") #{theWeekend.title}]
        p WHEN: #{theWeekend.selectedDate}