2012-03-26 104 views
0

我使用的是index.jade显示:如何使用expressJS partials/collections以相反顺序使集合显示?

!=partial('_blogPost.jade', blogPost) 

_blogPost.jade

div.row-fluid 
    div.span2.sider 
     h4.date 
      #{blogPost.addedOn.getDate()}/#{blogPost.addedOn.getMonth() + 1} 
      |#{blogPost.addedOn.getFullYear()} 
     h3 
      #{blogPost.type} 
    div.span9.post 
     h2 
      a(href="#{blogPost.url}") !{blogPost.title} 
     p !{blogPost.body} 

相当标准的blogrolling东西。 使用for循环标准是什么我在寻找将是:

for(var i = blogPost.length-1; i >= 0; i --){ 
blogPost[i].body 
etc... 
} 

的问题是,你如何收集使用expressJS谐音/藏品以相反的顺序显示出来?

+1

难道你不能在模板文件中使用它之前说'blogPost.reverse()'?! – pkyeck 2012-03-26 06:45:15

+0

我实际上不知道reverse()函数存在。我搜索了好半小时,但正在寻找一种玉/高速解决方法。你可以写这个答案,所以我可以把它标记为正确的?它工作得很好。 – 2012-03-26 07:19:22

回答

2

,你可以只是用它你的玉模板内,数组的内容会以相反的顺序显示之前说

blogPost.reverse(); 

+3

True - 请注意,'Array.prototype.reverse'会将数组反转,并改变数组。如果这不是您想要的,您可以创建一个副本并使用'blogPost.slice(0).reverse()'反转。 – 2012-03-26 14:07:09

0
each statement in debate 
    p(class='message')= statement.body 

可以在您要插入的JavaScript之前用单个连字符书写。不要忘记关闭括号!

- var i= debate.length; while (i--) {; message = debate[i]; 
    p(class='message')= statement.body   
- } 

我发布了两个解决方案,因为我知道这两个工作,但不知道哪个更好。

1

提高从死这个僵尸问题...

each statement in debate 
    p(class='message')= statement.body 

能跟你想插入的JavaScript前一个连字符写入。不要忘记关闭括号!

- for (var i= debate.length-1, message= debate[i]; i--; message = debate[i]) { 
    p(class='message')= statement.body 
- } 

我发布了两个解决方案,因为我知道这两个工作,但不知道哪个更好。